题目链接:

https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述:

解题思路:

(1)方法一:两次遍历链表

统计出链表中总共有多少个元素,然后找到第K个元素的位置,最后从链表的头部开始遍历到第k个元素的位置。

已经AC的代码:


public class findKthNode {class ListNode{int val;ListNode next = null;public ListNode(int data) {this.val = data;}}public ListNode head;public void createLinkedList(int data) {if(head == null) {head = new ListNode(data);}else {ListNode node = new ListNode(data);node.next = head;head = node;}}public ListNode FindKthToTail(ListNode head,int k) {int count = 1;ListNode node = head;if(head == null) {return null;}while(node.next != null) {count++;node = node.next;}if(k > count) {return null;}node = head;for(int i=0; i<count-k; i++) {node = node.next;}return node;}public static void main(String[] args) {findKthNode list = new findKthNode();for(int i=0; i<10; i++) {list.createLinkedList(i);}System.out.println(list.FindKthToTail(list.head, 10).val);}}

上面方法的缺点:

对于上面的方法,我们需要遍历链表两次,第一次统计出链表中节点的个数,第二次就能找到倒数第k个节点。但是当我们把这个思路解释给面试官之后,他会告诉我们他期待的解法只需要遍历链表一次。

(2)方法二:遍历一次链表

思路:

数据结构:单链表

算法:双指针

注意:代码的鲁棒性

已经AC的代码:

public class findKthNode {class ListNode{int val;ListNode next = null;public ListNode(int data) {this.val = data;}}public ListNode head;public void createLinkedList(int data) {if(head == null) {head = new ListNode(data);}else {ListNode node = new ListNode(data);node.next = head;head = node;}}public ListNode FindKthToTail(ListNode head,int k) {if(head == null || k == 0) {return null;}ListNode p1 = head;ListNode p2 = null;for(int i=0; i<k-1; i++) {if(p1.next != null) {p1 = p1.next;}else {return null;}}p2 = head;while(p1.next!=null) {p1 = p1.next;p2 = p2.next;}return p2;}public static void main(String[] args) {findKthNode list = new findKthNode();for(int i=0; i<10; i++) {list.createLinkedList(i);}System.out.println(list.FindKthToTail(list.head, 10).val);}}

牛客网在线编程专题《剑指offer-面试题15》链表中倒数第k个节点相关推荐

  1. 剑指Offer - 面试题22. 链表中倒数第k个节点(快慢指针)

    1. 题目 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5 ...

  2. 剑指offer面试题[15]-链表中倒数第K个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路: 假设链表有n个结点,那么倒数第k个结点就是从头结点开始的第n-k+1个结点,我们只要从头结点开始往后走n-k+1步就可以了.那么问题来了: ...

  3. 剑指offer面试题22. 链表中倒数第k个节点(链表)

    题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...

  4. 剑指offer(C++)-JZ22:链表中倒数最后k个结点(数据结构-链表)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点 ...

  5. 【剑指offer-Java版】15链表中倒数第K个结点

    链表中倒数第K个结点:快慢指针解决 需要注意的地方是 1) 可能会存在输入的链表大小小于k 2) 输入的k可能小于等于0 - 所以必须限定k大于0 public class _Q15 {public ...

  6. 牛客网在线编程专题《剑指offer-面试题28》字符串的排列

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 公众号介绍:Microstrong(小强)同学主要研究机器学习.深度学习.计算机视觉.智能对话系统相关内容,分享 ...

  7. 牛客网在线编程专题《剑指offer-面试题33》把数组排成最小的数

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习.深度学习.计算机视觉.智能对话系统相关内容, ...

  8. 牛客网在线编程专题《剑指offer-面试题39:题目二》判断是否是平衡二叉树

    题目链接: https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=13&tqId=11192& ...

  9. 剑指offer:面试题22. 链表中倒数第k个节点

    题目:链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1 ...

最新文章

  1. CDOJ1633 Video Game Combos [AC自动机+dp]
  2. CoreAnimation编程指南(三)几何变换
  3. UIWebView / NSURL / NSBoundle 相关应用 (实例,加载完成前的背景, 默认safari打开链接地址等)...
  4. 一些sql语句的详细解释
  5. JSP的Listener介绍
  6. WebService /php soap 相关调用 收藏
  7. c ringbuffer 源码_Python Ring Buffer的实现
  8. EasyNVR调16分屏播放ws-flv内存溢出导致浏览器崩溃问题的解决
  9. 日立hgp电梯mcub03主板原理图
  10. 程序员高手必会的十大编程算法
  11. lg相乘公式_ln公式(lg公式大全)
  12. VIN码/车架号的详解,车架号识别,VIN码识别,OCR车架号识别能带来什么
  13. 【iOS】崩溃收集和解析
  14. between and 用法
  15. 系统命名法(IUPAC命名法)
  16. 软件架构模式 mark Richards - 读后总结 3 - 微内核架构
  17. 2023年湖北武汉建设厅特种工架子工证怎么报名?报考条件?启程别
  18. Tacotron以及Tacotron2详解
  19. AtCoder Grand Contest 012 E - Camel and Oases 状压dp
  20. 我是没有口袋的哆啦a梦

热门文章

  1. 1212淘宝精选店铺红包
  2. 互联网行业竞争激烈 怎么做到不内卷不中年危机呢?
  3. 移动OA:企业微信和传统OA厂商APP如何选择?
  4. python 知识成长(持续更新)
  5. C++中int a和int a的区别
  6. 血战上海滩实现无限血量外挂编写
  7. 我爬取了猪八戒网站的信息,发现了程序员做威客不得不进的坑
  8. 六十星系之33紫微贪狼坐卯酉
  9. apache atlas
  10. USACO 2020 February Contest, Gold