面试题 02.02. 返回倒数第 k 个节点
题目描述
思路分析
这是一道简单的题目,主要是运用快慢指针的思想,初始化两个指针都指向 head,然后先让快指针向前走 k 步,然后再让快指针和慢指针一起往前面走,直到快指针为空,也就是走到了链表的尾结点,这时候慢指针刚好停在了倒数第 k 个节点.有了思路代码实现就比较简单了.
代码实现
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int kthToLast(ListNode head, int k) {
ListNode fast = head;
ListNode slow = head;
for (int i = 0;i < k; i ++) {
fast = fast.next;
}
while (fast != null) {
fast = fast.next;
slow = slow.next;
}
return slow.val;
}
}