首页 > 其他 > 详细

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

时间:2020-07-19 22:37:38      阅读:92      评论:0      收藏:0      [点我收藏+]

题目描述:

输入一个链表,输出该链表中倒数第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个节点

原文:https://www.cnblogs.com/pxy-1999/p/13340918.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!