【力扣】返回倒数第k个节点

【【力扣】返回倒数第k个节点】实现一种算法,找出单向链表中倒数第 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个节点。
(画图,一目了然!!!)

    推荐阅读