美文网首页
面试题 02.02. 返回倒数第 k 个节点

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

作者: Abeants | 来源:发表于2022-01-17 22:15 被阅读0次

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

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

示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4

说明:

给定的 k 保证是有效的。

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

解题思路及方法

经典快慢指针,快指针先移动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;

        // 快指针移动k步
        for (int i = 0; i < k; i++) {
            fast = fast.next;
        }
        
        while (fast != null) {
            fast = fast.next;
            slow = slow.next;
        }
        
        return slow.val;
    }
}

结果如下:

相关文章

网友评论

      本文标题:面试题 02.02. 返回倒数第 k 个节点

      本文链接:https://www.haomeiwen.com/subject/mvshhrtx.html