剑指JZ14_链表中倒数第K个节点
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
解题思路:快慢指针
快指针先走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; }
学习的博客多用于在笔记中,防止笔记过于臃肿,所以将样例及运行结果放在博客中,后以超链接的形式记录在笔记中,所以有些博文过于单薄。如果有小伙伴遇到问题欢迎评论,看到就会回复,学渣一枚,加油努力。