题解 | #链表中倒数最后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;

    } 
}

全部评论

相关推荐

11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
渴望wlb的牛油果很...:直说卡第一学历不就行了 非得拐弯抹角
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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