
用两个指针,一个先跑k个节点,然后两个同时出发,
等先到到那个指针到达链表末尾的时候,后面那个指针指向的位置就是倒数第k个节点
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null) return null;
ListNode p1=head;
while(p1!=null&&k-->0){
p1=p1.next;
}
if(k>0) return null;
ListNode p2=head;
while(p1!=null){
p1=p1.next;
p2=p2.next;
}
return p2;
}
}
错误:中间记得判断一下k是否为0了,以验证p1是否走了k个节点。
博客介绍了在链表中找倒数第k个节点的方法,使用两个指针,一个先跑k个节点,然后两个同时出发,当先跑的指针到达链表末尾时,后一个指针指向的就是倒数第k个节点,同时提醒要判断k是否为0。

131

被折叠的 条评论
为什么被折叠?



