题目
输入一个链表,输出该链表中倒数第k个结点。(链表从1开始计数。)
思路
- 两个指针a和b,a指向第一个,b先指向第k个;
- ab同时移动,直到b指向链表的尾部;
- 注意边界条件:输入链表为null,K<=0,K大于链表的长度。
代码
public static ListNode findKthToTail(ListNode head){
if(head == null||k<=0)
return null;
ListNode a=head;
ListNode b=head;
//注意为k-1,从1到k只需移动k-1次
for (int i=0;i<k-1;i++){
if(head.next==null)
return null;
b=b.next;
}
while(b.next!=null){
b=b.next;
a=a.next;
}
return a;
}