面试之路(27)-链表中倒数第K个结点
java,链表,面试,指针,编程2016-06-26
所谓的鲁棒性是指能够判断输入是否合乎规范,能对不和规范的程序进行处理。
容错性是鲁棒性的一个重要体现。
防御性编程有助于提高鲁棒性。
public class ListNode{
int key;
ListNode next;
}
采用双指针的思路,初始化两个listNode,First和second。
first先走k-1步,然后两个一直往后遍历,直到First.next == null.
注意head为空和k 《= 0,以及k大于链条的长度。
public ListNode findKthToTail(ListNode head,int k){
if(head == null||k <= 0){
return null;
}
ListNode first = head;
ListNode second = null;
for(int i = 0;i < k-1;i++){
if(first.next != null){
first = first.next;
}else{
return null;
}
}
second = head;
while(first.next != null){
first = first.next;
second = second.next;
}
return second;
}