输入一个链表,输出该链表中倒数第k个结点。
此题用双指针技术,首先先让第一个指针多走k-1步;
然后两个同时向右走,当第一个指针到最右端时候,第二个指针所指的位置就是倒数第k个节点。
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
//单向链表 用双指针 距离为k-1
if(head==null||k==0){
return null;
}
ListNode left = head;
ListNode right = head;
//双指针 差距为k-1
for(int i=1;i<k;i++){
//倒数的数比总长度还大
if(right.next==null){
return null;
}
right = right.next;
}
//right走到最右边为止
while(right.next!=null){
left = left.next;
right = right.next;
}
return left;
}
}