心血来潮...
问题:求一个链表倒数第k个数的值?
方法:用快慢指针。既然要求倒数第k个值,就先设两个结点,第一个结点先走k步,第二个结点在头结点处,当第一个结点走到结尾时,第二个结点所处位置的值就是倒数第k个数的值!
结点说明:
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
算法:
public int kthToLast(ListNode head, int k) {
ListNode first = head;
ListNode second = head;
if(head != null){
for(int i=0; i<k; i++){
first = first.next;
}
while(first.next != null){
first = first.next;
second = second.next;
}
}
return second.val;
}
关于链表问题一定要注意边界条件。