双指针,当相距k-1时,当后者到最后时,前者才恰好是倒数第k个元素。
最后一个元素的循环条件是cur.next!=null,而不是cur!=null.
链表访问(cur.next)全程要确保非空!
/**
* 输入一个链表,输出该链表中倒数第k个结点。
* @param head 链表
* @param k 倒数第k
* @return 输出该链表中倒数第k个结点。
*/
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k<=0){
return null;
}
ListNode cur=head;
for(int i=0;i<k-1;i++){
if(cur.next==null){
return null;
}
cur=cur.next;
}
ListNode res=head;
while (cur!=null){
cur=cur.next;
res=res.next;
}
return res;
}



京公网安备 11010502036488号