Re: [閒聊] 每日leetcode

作者: NCKUEECS (小惠我婆)   2024-03-04 00:05:58
白癡賽區讓我一盤小康->赤貧
來刷點P幣
※ 引述《oin1104 (是oin的說)》之銘言:
: 突然發現有點久沒紀錄= =
: 今天每日是
: 19. remove Nth Node from end of list
: 叫你刪除從後面數的第N個節點
: 解法:
先算總長度就蠻簡單的
但follow up要求用one pass
其實我也不確定怎樣叫one pass
要刪倒數第n個
就要找到倒數第n+1個
用2個pointer a b
b先走n步後
ab再同時一步一步動
當b走到最後一個節點的時候
a就是倒數第n+1個了
struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
struct ListNode *new_head = malloc(sizeof(struct ListNode)*1);
struct ListNode *slow = new_head, *fast = new_head;
int i;
new_head->next = head;
for(i=0; i<n; i++)
fast = fast->next;
while(fast->next){
fast = fast->next;
slow = slow->next;
}
slow->next = slow->next->next;
return new_head->next;
}
之前寫過
結果今天看了10分鐘完全想不到...
真不知道我當初怎麼想到的
作者: oin1104 (是oin的說)   2024-03-04 00:08:00
這做法 很酷

Links booklink

Contact Us: admin [ a t ] ucptt.com