剑指JZ14_链表中倒数第K个节点

Posted 硬盘红了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指JZ14_链表中倒数第K个节点相关的知识,希望对你有一定的参考价值。

题目描述:

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

题目链接:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

 

解题思路:快慢指针

快指针先走K步,之后两个指针同时前进,当快指针走出尾结点后,慢指针距离尾结点的距离为K-1,即是倒数第K个节点

public ListNode FindKthToTail(ListNode head, int k) {
        ListNode quick = head;
        ListNode slow = head;

        //考虑特殊情况:1.head为null 2.K = 0 3. k 大于链表长度
        if (head == null || k == 0){
            return null;
        }

        //快指针先走k步
        for (int i = 0;i<k;i++){
            if (quick == null){
                return null;
            }
            quick = quick.next;
        }
        //然后两个指针同时前进
        while (quick!=null){
            quick = quick.next;
            slow = slow.next;
        }
        //当快指针走过尾结点,此时慢指针就是倒数第k个数
        return slow;
    }

 

以上是关于剑指JZ14_链表中倒数第K个节点的主要内容,如果未能解决你的问题,请参考以下文章

JZ3.从尾到头打印链表;JZ14.链表中倒数第K个节点;JZ15.反转链表;JZ16.合并两个有序链表;JZ36.两个链表的第一个公共节点;JZ55.链表中环的入口节点;JZ56.删除链表中重复节点

剑指offer(C++)-JZ22:链表中倒数最后k个结点(数据结构-链表)

剑指offer(C++)-JZ22:链表中倒数最后k个结点(数据结构-链表)

剑指Offer-14.链表中倒数第k个结点(C++/Java)

剑指offer:链表中倒数第k个节点

刷题记录-剑指offer22:链表中倒数第k个节点