File tree Expand file tree Collapse file tree 4 files changed +113
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal Expand file tree Collapse file tree 4 files changed +113
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ Constraints:
3+ 1. 3 <= nums.length <= 3000
4+ 2. -10^5 <= nums[i] <= 10^5
5+
6+ Time Complexity:
7+ - O(n^2) (정렬은 O(n log n), 이중 반복문은 O(n^2))
8+ Space Complexity:
9+ - O(n) (결과 리스트)
10+ """
11+
12+ class Solution :
13+ def threeSum (self , nums : List [int ]) -> List [List [int ]]:
14+ nums .sort ()
15+ result = []
16+
17+ for i in range (len (nums ) - 2 ):
18+ if i > 0 and nums [i ] == nums [i - 1 ]:
19+ continue
20+
21+ left , right = i + 1 , len (nums )- 1
22+
23+ while left < right :
24+ sum = nums [i ] + nums [left ] + nums [right ]
25+
26+ if sum == 0 :
27+ result .append ([nums [i ], nums [left ], nums [right ]])
28+
29+ while left < right and nums [left ] == nums [left + 1 ]:
30+ left += 1
31+ while left < right and nums [right ] == nums [right - 1 ]:
32+ right -= 1
33+
34+ left += 1
35+ right -= 1
36+
37+ elif sum < 0 :
38+ left += 1
39+ else :
40+ right -= 1
41+
42+ return result
Original file line number Diff line number Diff line change 1+ """
2+ Constraints:
3+ - 1 <= n <= 45
4+
5+ Time Complexity:
6+ - O(n)
7+ Space Complexity:
8+ - O(n)
9+ """
10+
11+ class Solution :
12+ def climbStairs (self , n : int ) -> int :
13+ if n == 1 :
14+ return 1
15+ if n == 2 :
16+ return 2
17+
18+ dp = [0 ] * (n + 1 )
19+ dp [1 ], dp [2 ] = 1 , 2
20+
21+ for i in range (3 , n + 1 ):
22+ dp [i ] = dp [i - 1 ] + dp [i - 2 ]
23+ return dp [n ]
Original file line number Diff line number Diff line change 1+ """
2+ Constraints:
3+ 1. 1 <= preorder.length <= 3000
4+ 2. inorder.length == preorder.length
5+ 3. -3000 <= preorder[i], inorder[i] <= 3000
6+ 4. preorder and inorder consist of unique values
7+ 5. Each value of inorder also appears in preorder
8+ 6. preorder is guaranteed to be the preorder traversal of the tree
9+ 7. inorder is guaranteed to be the inorder traversal of the tree
10+
11+ Time Complexity:
12+ - O(N^2). 각 노드(N)마다 inorder에서 index를 찾는 연산(N)이 필요하고, 각 노드를 한 번씩 방문하여 트리를 구성하기 때문.
13+ Space Complexity:
14+ - O(N). 재귀 호출 스택을 위한 공간이 필요하며, 최악의 경우(한쪽으로 치우친 트리) 재귀 깊이가 N까지 갈 수 있기 때문.
15+ """
16+
17+ class Solution :
18+ def buildTree (self , preorder : List [int ], inorder : List [int ]) -> Optional [TreeNode ]:
19+ if not preorder or not inorder :
20+ return None
21+
22+ root = TreeNode (preorder [0 ])
23+ mid = inorder .index (preorder [0 ])
24+
25+ root .left = self .buildTree (preorder [1 :mid + 1 ], inorder [:mid ])
26+ root .right = self .buildTree (preorder [mid + 1 :], inorder [mid + 1 :])
27+
28+ return root
Original file line number Diff line number Diff line change 1+ """
2+ Constraints:
3+ - 1 <= len(s), len(t) <= 50_000
4+ - s and t consist of lowercase English letters (a-z) only
15
6+ Time Complexity:
7+ - O(n log n)
8+ Space Complexity:
9+ - O(n)
10+ """
11+
12+ class Solution :
13+ def isAnagram (self , s : str , t : str ) -> bool :
14+
15+ s = s .replace (' ' , '' ).lower ()
16+ t = t .replace (' ' , '' ).lower ()
17+
18+ if sorted (s ) == sorted (t ):
19+ return True
20+ else :
21+ return False
You can’t perform that action at this time.
0 commit comments