File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
remove-nth-node-from-end-of-list Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 1+ from typing import Optional
2+
3+
4+ # Definition for singly-linked list.
5+ class ListNode :
6+ def __init__ (self , val = 0 , next = None ):
7+ self .val = val
8+ self .next = next
9+
10+
11+ class Solution :
12+ def removeNthFromEnd (self , head : Optional [ListNode ], n : int ) -> Optional [ListNode ]:
13+ """
14+ - Idea: ๋ ํฌ์ธํฐ(slow, fast)๋ฅผ ์ฌ์ฉํ์ฌ slow๊ฐ ์ญ์ ํ ๋
ธ๋์ ์ด์ ๋
ธ๋์ ์์นํ๋๋ก ํ๋ค.
15+ slow.next๋ฅผ ์กฐ์ ํ์ฌ ์ญ์ ํ ๋
ธ๋๋ฅผ ๊ฑด๋๋ฐ๋๋ก ํ๋ค.
16+ ์ญ์ ํ ๋
ธ๋๊ฐ head์ผ ๊ฒฝ์ฐ๋ฅผ ๊ฐ๋จํ ์ฒ๋ฆฌํ๊ธฐ ์ํด dummy ๋
ธ๋๋ฅผ ์ฌ์ฉํ๋ค.
17+ - Time Complexity: O(n). n์ ๋ฆฌ์คํธ์ ๋
ธ๋ ์.
18+ ์ต๋ ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ์ํํ์ฌ ์ญ์ ํ ๋
ธ๋๋ฅผ ์ฐพ๊ณ ์ ๊ฑฐํ๋ฏ๋ก O(n)์ด ์์๋๋ค.
19+ - Space Complexity: O(1).
20+ dummy ๋
ธ๋์ slow, fast ํฌ์ธํฐ๋ฅผ ์ํ ์์ ๊ณต๊ฐ๋ง ํ์ํ๋ค.
21+ """
22+
23+ dummy = ListNode (0 )
24+ dummy .next = head
25+ slow , fast = dummy , dummy
26+
27+ for _ in range (n + 1 ):
28+ fast = fast .next
29+
30+ while fast :
31+ slow = slow .next
32+ fast = fast .next
33+
34+ slow .next = slow .next .next
35+
36+ return dummy .next
You canโt perform that action at this time.
0 commit comments