链表中倒数第k个结点

youzhihua · · 655 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

题目描述

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

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:youzhihua

查看原文:链表中倒数第k个结点

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

655 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传