这题主要有个坑点就是k可能大于链表长度,那么我们首先要计算链表长度,然后直接遍历即可。
如果不用考虑链表长度的话,可以考虑快慢指针,其中快指针先走k步,随后快慢指针一起走,最后慢指针的位置就是倒数第k个位置。
class Solution {
public ListNode findKthToTail(ListNode head, int k) {
if(head==null||k==0) return null;
int count=1;
ListNode cur=head;
while(cur.next!=null){
cur=cur.next;
count++;
}
if(k>count) return null;
cur=head;
for(int i=0;i<count-k;i++) cur=cur.next;
return cur;
}
}
请问 第一行为什么不是head.next==null呢?
head.next==null代表此时链表只有一个节点