链表中倒数第k个结点(剑指offer)
输入一个链表,输出该链表中倒数第k个结点。
解法:倒数第k个节点与最后一个节点相距k-1个节点。所以先定两个节点(first,second)都为头节点,让first节点先走k-1步,然后两个节点同时向后走,当first为尾节点时,second就是倒数第k个节点。同样这道题要注意一些特殊情况,这些特殊情况可能会导致程序出错,如1:链表为空;2:k=0;3:k>链表的长度;这些都要去考虑
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null || k==0){
return null;
}
ListNode firstnode = head;
ListNode secondnode = head;
for(int i=0;i<k-1;i++){
if(firstnode.next!=null){
firstnode = firstnode.next;
}else{
return null;
}
}
while(firstnode.next!=null){
firstnode = firstnode.next;
secondnode = secondnode.next;
}
return secondnode;
}
}