简介
链表中倒数第K个节点.
思路
双指针, 然后一个指针延迟运行.
code
class Solution {
public:
ListNode* getKthFromEnd(ListNode* head, int k) {
ListNode *p = head;
ListNode *pk = head;
int index = 0;
bool check = false;
while(p){
p = p->next;
index ++;
if(index == k) check = true;
if(index > k){
pk=pk->next;
}
}
if(check) return pk;
return NULL;
}
};
java
// 可以让一个指针先走, 真的方便.
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode former = head, latter = head;
for(itn i = 0; i<k; i++){
former = former.next;
}
while(former != null) {
former = former.next;
latter = latter.next;
}
return latter;
}
}
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》