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

链表中倒数最后k个结点

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

import java.util.*;

public class Solution {
    /**
     * 	思路:双指针法
	 *	设置两个节点指向头结点,可以让p2先走k步,再让p1和p2同时走,当p2走到链表尾部的时候,
	 *	p1,就是链表倒数第k个节点,直接返回即可
	 *	这里考虑k可能超出范围,只需判断p2是否为null,就是是否会超出链表尾部
	 *	如果超出,直接返回null即可
     *
     * @param pHead ListNode类
     * @param k int整型
     * @return ListNode类
     */
    public ListNode FindKthToTail (ListNode pHead, int k) {
        ListNode p1 = pHead;
        ListNode p2 = pHead;

        int c = 0;
        while(c < k){
           if(p2 == null){
                return null;
            }
            p2 = p2.next;
            c++;
        }
        while(p2 != null){
            p1 = p1.next;
            p2 = p2.next;
        }
        return p1;

    } 
}

全部评论

相关推荐

07-17 11:56
门头沟学院 Java
感谢东子的收留
熬夜脱发码农:无敌了,这是我看到第二个京东的提前批大佬了我还在畏畏缩缩准备八股算法
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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