File tree Expand file tree Collapse file tree 2 files changed +67
-0
lines changed
remove-nth-node-from-end-of-list Expand file tree Collapse file tree 2 files changed +67
-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
Original file line number Diff line number Diff line change 1+ from typing import Optional
2+
3+
4+ # Definition for a binary tree node.
5+ class TreeNode :
6+ def __init__ (self , val = 0 , left = None , right = None ):
7+ self .val = val
8+ self .left = left
9+ self .right = right
10+
11+
12+ class Solution :
13+ def isSameTree (self , p : Optional [TreeNode ], q : Optional [TreeNode ]) -> bool :
14+ """
15+ - Idea: ๋ ํธ๋ฆฌ๋ ๊ตฌ์กฐ๊ฐ ๊ฐ๊ณ , ๊ฐ ๋
ธ๋์ ๊ฐ์ด ๊ฐ์์ผ ๊ฐ์ ํธ๋ฆฌ๋ผ๊ณ ๊ฐ์ฃผํ๋ค.
16+ ์ด๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ๊ท์ ์ผ๋ก ๊ฐ ๋
ธ๋๋ฅผ ๋น๊ตํ๋ค.
17+ - Time Complexity: O(n). n์ ํธ๋ฆฌ์ ๋
ธ๋ ์.
18+ ๋ ํธ๋ฆฌ์ ๋ชจ๋ ๋
ธ๋๋ฅผ ๋น๊ตํด์ผ ํ๋ฏ๋ก O(n)์ด ์์๋๋ค.
19+ - Space Complexity: O(n). n์ ๋ฆฌ์คํธ์ ๋
ธ๋ ์.
20+ ์ฌ๊ท ํธ์ถ๋ก ์ธํด ํธ์ถ ์คํ์ ์ํ ๊ณต๊ฐ์ด ํ์ํ๋ฉฐ, ์ต์
์ ๊ฒฝ์ฐ O(n)๊น์ง ํ์ํ ์ ์๋ค.
21+ """
22+
23+ if not p and not q :
24+ return True
25+ if not p or not q or p .val != q .val :
26+ return False
27+
28+ is_left_equal = self .isSameTree (p .left , q .left )
29+ is_right_equal = self .isSameTree (p .right , q .right )
30+
31+ return is_left_equal and is_right_equal
You canโt perform that action at this time.
0 commit comments