File tree Expand file tree Collapse file tree 3 files changed +73
-0
lines changed
find-minimum-in-rotated-sorted-array
longest-repeating-character-replacement
search-in-rotated-sorted-array Expand file tree Collapse file tree 3 files changed +73
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution :
2+ def findMin (self , nums : List [int ]) -> int :
3+
4+ l = 0
5+ r = len (nums ) - 1
6+
7+ while l <= r :
8+ mid = (l + r ) // 2
9+ if nums [mid ] < nums [r ]:
10+ r = mid
11+ else :
12+ l = mid + 1
13+
14+ return nums [r ]
15+
16+ # TC: O(logn), SC: O(1)
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def characterReplacement (self , s : str , k : int ) -> int :
3+ l = 0
4+ c_frequency = {}
5+ longest_str_len = 0
6+
7+ for r in range (len (s )):
8+ if not s [r ] in c_frequency :
9+ c_frequency [s [r ]] = 0
10+ c_frequency [s [r ]] += 1
11+
12+ cells_count = r - l + 1
13+ if cells_count - max (c_frequency .values ()) <= k :
14+ longest_str_len = max (longest_str_len , cells_count )
15+
16+ else :
17+ c_frequency [s [l ]] -= 1
18+ if not c_frequency [s [l ]]:
19+ c_frequency .pop (s [l ])
20+ l += 1
21+
22+ return longest_str_len
23+
24+ ## TC: O(n), SC: O(1)
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def search (self , nums : List [int ], target : int ) -> int :
3+ left , right = 0 , len (nums ) - 1
4+
5+ while left <= right :
6+ mid = (left + right ) // 2
7+
8+ if nums [mid ] == target :
9+ return mid
10+
11+ if nums [left ] <= nums [mid ]:
12+ if nums [left ] <= target < nums [mid ]:
13+ right = mid - 1
14+ else :
15+ left = mid + 1
16+
17+ else :
18+ if nums [mid ] < target <= nums [right ]:
19+ left = mid + 1
20+ else :
21+ right = mid - 1
22+
23+ return - 1
24+
25+ ## TC: O(n), SC: O(1)
26+
27+ # if target in nums:
28+ # return nums.index(target)
29+ # else:
30+ # return -1
31+
32+ ## TC: O(n), this may fater than bintree way if gvien nums are longer
33+ ## SC: O(n)
You can’t perform that action at this time.
0 commit comments