实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
/**
* 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 l = head;
ListNode r = head;
for (int i = 0; i < k; i++) {
r = r.next;
}
while(r != null) {
l = l.next;
r = r.next;
}
return l.val;
}
}
设有n个节点,那么head节点需要移动n-k次才能指向倒数第k个节点,上述的l节点从头开始移动,而r节点需要先将其移动k次,当r节点为null时,就代表移动了n-k次,那么此时l指向的就是倒数第k个节点。
(画图,一目了然!!!)