【力扣】返回倒数第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个节点。
(画图,一目了然!!!)

你可能感兴趣的:(练习题)