问题:输入一个链表,输出该链表中倒数第k个结点
例如:输入:4{1,2,3,5,6,4} 输出:3
思路:首先要考虑head为空的情况。再考虑k(与位置相关)的合法性。若k不小于0,让fast先走,利用k-1!=0让fast走到第一个k的倍数处,若在走之间fast.next的值出现空的情况,则说明k值大于了链表的长度size。之后让slow和fast一起走,直到fast为空,此时slow的值就是所要求的节点。
主要代码:
class ListNode{
public int val;
public ListNode next;
}
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k<0){return null;}
ListNode slow=head;
ListNode fast=head;
while((k-1)!=0){
if(fast.next!=null){
fast=fast.next;
k--;
}else{
return null;
}
}
while(fast!=null){
slow=slow.next;
fast=fast.next;
}
return slow;
}