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

链表中倒数最后k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

import java.util.*;
/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */
/**此题的快慢指针使用相同时间所踏步数是一致的,区别在于,快指针先走了几步
1.对链表为空的情况进行判断,若为空则返回空
2.创建快慢指针,头节点均为pHead,并设置快指针要先走的多少步
3.在循环中对所走步数与要求数k作比较,如若fast已经为null,还需要向后走,那我们就判定k的值一定是大于原链表的长度,返回null即可;
4.若在第一个循环正常结束,那么快指针已到达目的地,也就是从头节点为起点快指针走k步,那么,此时慢指针也可以开始向后走了,且与快指针同步,等到快指针走向最后一个节点的下一个节点null值时,此时返回slow节点,即为最后的k个节点
*/
public class Solution {
    public ListNode FindKthToTail (ListNode pHead, int k) {
        if(pHead == null){
            return pHead;
        }
	  //--------------------------------以上为第一部分----------------------------------------
        ListNode fast = pHead;
        ListNode slow = pHead;
        int count = 1;
	   //--------------------------------以上为第二部分----------------------------------------
        while(count <= k){
            count++;
            if(fast == null){
                return null;
            }else{
                fast = fast.next;
            }
        }
	   //--------------------------------以上为第三部分----------------------------------------
        while(fast != null){
            fast = fast.next;
            slow = slow.next;
        }
	   //--------------------------------以上为第四部分----------------------------------------
        return slow; //此处必须返回,为的是输出正确答案
    }
}

全部评论

相关推荐

家人们这个评估还要多久啊
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
投了100多家都是石沉大海
迷茫的大四🐶:别急,现在都是92的✌🏻和大牛在乱杀,等秋招后期才轮到我们这些普通人
点赞 评论 收藏
分享
西二旗混子:不需要在简历上下功夫了,把时间放在找岗位上,海投2000个
无实习如何秋招上岸
点赞 评论 收藏
分享
真三hjdlxn:这么能吹还能找不到实习啊? 市分行写TOP投行,2个月的实习写半页。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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