Skip to content

Commit 841f937

Browse files
committed
[Leo] 6th Week solutions
1 parent 63a7635 commit 841f937

File tree

3 files changed

+73
-0
lines changed
  • find-minimum-in-rotated-sorted-array
  • longest-repeating-character-replacement
  • search-in-rotated-sorted-array

3 files changed

+73
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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)

search-in-rotated-sorted-array/Leo.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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)

0 commit comments

Comments
 (0)