题目描述:
输入一个链表,输出该链表中倒数第k个结点。
思路:
1.用两个指针构造一把长度为k的“尺子”,初始时两个指针都指向头结点
2.再将第一个指针指向第k个结点。然后两个指针同时往后移动
3.当第一个指针到达末尾的时候,第二个指针所在位置即为倒数第k个结点
(注意边界)
实现:
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k<=0){
return null;
}
ListNode pre=head;
ListNode last=head;
for(int i=1;i<k;i++){
if(pre.next!=null){ //i = k-1时,pre位于k位置
pre=pre.next;
}
else{
return null;
}
}
while(pre.next!=null){
pre = pre.next;
last=last.next;
}
return last;
}
}