力扣---面试题 02.02. 返回倒数第 k 个节点

发布时间 2023-04-03 16:50:09作者: Owlwu

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意:本题相对原题稍作改动

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:

给定的 k 保证是有效的。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/kth-node-from-end-of-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

/**
 * 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 node = head;
        ListNode res = head;
        // 先走 k 步,保证 node 和 head 之间的距离是k
        for (int i = 0; i < k; i ++) {
            node = node.next;
        }
        // 然后让node和res同步向右,此时可以保证当node到达末尾时,res正好就是倒数第k个节点(res和node的距离相差为k)
        while (node != null) {
            node = node.next;
            res = res.next;
        }
        return res.val;
    }
}