题解 | #链表中倒数第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;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在...:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 15:39
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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