21.链表中倒数第k个节点

输入一个链表,输出该链表中倒数第 k 个结点。

注意:

  • k >= 1;
  • 如果 k 大于链表长度,则返回 NULL;

数据范围:

链表长度 [0,30]。

样例:

输入:链表: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 ListNode findKthToTail(ListNode pListHead, int k) {
        //n用于计算链表的总长度
        int n = 0;
        ListNode p = pListHead;
        //遍历链表计算长度
        for(ListNode head = pListHead;head!=null;head = head.next)n++;
        //如果k大于链表长度,直接返回null
        if(k>n)return null;
        //从头节点开始,往后移动n-k次,找到倒数第k个节点
        for(int i = 0;i<n-k;i++)p = p.next;
        //返回找到的节点
        return p;
    }
}
posted @ 2025-05-15 09:37  回忆、少年  阅读(4)  评论(0)    收藏  举报