每日一题-链表(前后指针的使用)

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        //思路:定义两个指针,front,rear,先让front走k步,再让rear开始走,和front同时遍历,最后front所在位置就是倒数第k个节点的位置
        if(head == null || k < 0) return null;
        ListNode front = head;
        ListNode rear = head;
        while(front != null && k > 0 ){//当front不为空且k>0时,要确保链表长度大于k
            k--;
            front = front.next;//让front先走k步
        }
        while(front != null){//front和rear同时走
            front = front.next;
            rear = rear.next;
        }
        return k > 0 ? null : rear;//当k>0时,返回null,否则返回rear
    }
}

链表中倒数第k个结点_牛客题霸_牛客网 

本题思路:定义两个指针,一个指针先走k步,另一个指针跟在后面,使用前后指针的方式,当前面指针到达结尾,后面的指针就是倒数第k个节点。

猜你喜欢

转载自blog.csdn.net/weixin_54447656/article/details/121594187