码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-19 23:26:26      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:http   bsp   节点   题目   odi   int   ota   两个指针   nod   

题目描述:

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

标签:http   bsp   节点   题目   odi   int   ota   两个指针   nod   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!