题解 | #链表中倒数第k个结点#

链表中倒数第k个结点

https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a

思路:

定义快慢指针fast和slow,第一次用fast遍历链表制造fast与slow符合题意的距离差,第二次fast和slow同时遍历链表当fast为null,此时slow即为答案. 开始要注意对链表判空,以及对k的合理性判断,k应>0且<链表的长度,而我们能在开始判断k是否大于0.第一次循环的终止条件是k==0或者fast==null,当第一次循环结束后如果k!=0,则k比链表的长度长不合理,返回null

时间复杂度

O(N)

空间复杂度

O(1)

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head==null||k<1) return null;
        ListNode slow=head; 
        ListNode fast=head;
        while(k!=0&&fast!=null){
            fast=fast.next;
            k--;
        }
        if(k!=0) return null;
        while(fast!=null){
            slow=slow.next;
            fast=fast.next;
        }
        return slow;
    }
}
全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务