File tree 1 file changed +36
-0
lines changed
remove-nth-node-from-end-of-list 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