链表中倒数第k个节点

    科技2026-03-06  6

    题意: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。

    例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。

    示例: 给定一个链表: 1->2->3->4->5, 和 k = 2.

    返回链表 4->5.

    思路: 返回第四个结点,后面的都会跟着返回,并非只有一个

    1.这里使用双指针的方法: former 初始值 为head latter 初始值为 head; 二者刚开始都指向,头结点

    2.构建双指针的距离: 前指针former 先向前 走 k 步。 此时二者相差k

    3.两个指针共同移动, 通过循环,直到前指针former跳出尾结点,此时latter指针与尾结点相差k-1 ,说明 latter指向的是倒数第k个结点。

    4.返回latter。 便可输出之后所以元素。

    代码实现:

    /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode getKthFromEnd(ListNode head, int k) { ListNode latter = head, former = head; for(int i = 0; i < k; i++){ former = former.next; } while(former != null){ former = former.next; latter = latter.next; } return latter; } }
    Processed: 0.014, SQL: 9