题目
输入一个链表,输出该链表中倒数第k个结点
解题
定义两个指针:slow、fast
k是大于0的数
fast先先前走k步
k步没有结束,fast为空,说明k大于链表长度
走完k步,fast为空,说明是链表第一个结点
其他情况,fast和slow一起走
fast走到最后时候,slow.next就是倒数第k个结点
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode fast = head;
ListNode slow = head;
if(k<=0)
return null;
// fast 向前走k步
while(k>=1){
if(fast == null){
return null;
}
fast = fast.next;
k--;
}
// 空的时候说明是第一个结点
if(fast == null ){
return slow;
}
// 一起走
while(fast.next!=null){
fast = fast.next;
slow = slow.next;
}
return slow.next;
}
}