时间不多匆匆记录一下,方便后期复习
题目:输入一个链表,输出该链表中倒数第k个节点。
代码:
struct ListNode* getKthFromEnd(struct ListNode* head, int k){
struct ListNode *fast = head,*slow = head;
for (int i =0; i < k;i++){ //让快指针先走到第k个位置后停下
if(fast==NULL){
return NULL;
}
fast = fast->next;
}
while(fast!=NULL){ //快指针还没有走到结尾处加入慢指针一起
fast=fast->next;
slow=slow->next;
return slow; //快指针到结尾时,慢指针所指位置就是倒数第k个
}
}
时间复杂度 O(N) : N 为链表长度;
空间复杂度 O(1)。双指针常数大小的额外空间。