链表中倒数第k个结点

题目描述

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

思路

  1. 设置一对快慢指针
  2. 快指针先走k步,若快指针没走完k步便为null,直接返回null即可
  3. 快慢指针同时移动,若快指针指向null,直接返回慢指针即可

Java代码实现

    public ListNode FindKthToTail(ListNode head,int k) {
        ListNode fast = head;
        ListNode slow = 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;
    }

Golang代码实现

func FindKthToTail(head *ListNode,k int) *ListNode{
    fast,slow := head,head

    for k > 0 && fast != nil  {
        fast = fast.Next
        k--
    }

    if k>0 {
        return nil
    }

    for fast != nil {
        fast = fast.Next
        slow = slow.Next
    }

    return slow
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-30 18:19
点赞 评论 收藏
分享
点赞 评论 收藏
分享
龙珠传说:nb,公务员解约不需要支付违约金吧
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
重生之我要干前端:放宽心,作弊很明显的,面试官也不是傻子,而且这世上更多的肯定是依靠自己的知识的人,所以放宽心提升自己最重要
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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