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

    } 
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务