File tree Expand file tree Collapse file tree 3 files changed +76
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 3 files changed +76
-0
lines changed Original file line number Diff line number Diff line change 1+ # Definition for a binary tree node.
2+ # class TreeNode:
3+ # def __init__(self, val=0, left=None, right=None):
4+ # self.val = val
5+ # self.left = left
6+ # self.right = right
7+
8+ # idea : dfs
9+ # Time Complexity : O(n)
10+
11+ class Solution :
12+ def invertTree (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
13+ if root is None :
14+ return None
15+
16+ tmp = root .left
17+ root .left = root .right
18+ root .right = tmp
19+
20+ self .invertTree (root .left )
21+ self .invertTree (root .right )
22+ return root
23+
24+
Original file line number Diff line number Diff line change 1+ # idea: recursive
2+ # Time Complexity : O(n^n) w.o cache
3+ # : O(n^2) w cache
4+
5+ class Solution :
6+ def canJump (self , nums : List [int ]) -> bool :
7+ last_idx = len (nums ) - 1
8+
9+ @cache
10+ def jump (i ):
11+ if i == last_idx :
12+ return True
13+ # jump from 1 to numbers
14+ for j in range (1 , nums [i ] + 1 ):
15+ if jump (i + j ):
16+ return True
17+
18+ return False
19+ return jump (0 )
20+
21+
22+
Original file line number Diff line number Diff line change 1+ # idea : binary search
2+ # Time Complexity : O(log n)
3+
4+ # Sorting is not allowed because it costs O(n log n), so we must handle it using binary search without sorting.
5+ # One way is to check where the sorted order is disrupted.
6+
7+ class Solution :
8+ def search (self , nums : List [int ], target : int ) -> int :
9+ left , right = 0 , len (nums )- 1
10+
11+ while left <= right :
12+ mid = (left + right ) // 2
13+
14+ if nums [mid ] == target :
15+ return mid
16+
17+ if nums [left ] <= nums [mid ]:
18+ if nums [left ] <= target < nums [mid ]:
19+ right = mid - 1
20+ else :
21+ left = mid + 1
22+
23+ else :
24+ if nums [mid ] < target <= nums [right ]:
25+ left = mid + 1
26+ else :
27+ right = mid - 1
28+ return - 1
29+
30+
You can’t perform that action at this time.
0 commit comments