Skip to content

Commit 8d0c833

Browse files
committed
upload on 3/20
1 parent c86c63b commit 8d0c833

6 files changed

+103
-0
lines changed

151. Reverse Words in a String.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Solution:
2+
3+
def reverseWords(self, s: str) -> str:
4+
return " ".join(s.strip().split()[::-1])

152. Maximum Product Subarray.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
3+
def maxProduct(self, nums: List[int]) -> int:
4+
cur_min = nums[0]
5+
cur_max = nums[0]
6+
max_overall = nums[0]
7+
for num in nums[1:]:
8+
cur_min, cur_max = min(cur_min * num, cur_max * num, num), max(cur_min * num, cur_max * num, num)
9+
max_overall = max(cur_max, max_overall)
10+
return max_overall
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution:
2+
3+
def findMin(self, nums: List[int]) -> int:
4+
left = 0
5+
right = len(nums) - 1
6+
temp = nums[0]
7+
while left < right:
8+
mid = left + (right - left) // 2
9+
if nums[mid] < nums[right]:
10+
right = mid
11+
elif nums[mid] > nums[right]:
12+
left = mid + 1
13+
else:
14+
right -= 1
15+
return nums[left]
16+
# May a little bit faster
17+
# left = 0
18+
# right = len(nums) - 1
19+
# temp = nums[0]
20+
# while left < right and nums[left] >= nums[right]:
21+
# mid = left + (right - left) // 2
22+
# if nums[mid] < nums[right]:
23+
# right = mid
24+
# elif nums[mid] > nums[right]:
25+
# left = mid + 1
26+
# else:
27+
# right -=1
28+
# left += 1
29+
# return nums[left]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
3+
def findMin(self, nums: List[int]) -> int:
4+
left = 0
5+
right = len(nums) - 1
6+
7+
while left < right:
8+
mid = left + (right - left) // 2
9+
if nums[mid] <= nums[right]:
10+
right = mid
11+
else:
12+
left = mid + 1
13+
return nums[left]

155. Min Stack.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class MinStack:
2+
3+
def __init__(self):
4+
"""
5+
initialize your data structure here.
6+
"""
7+
self.min_val = float("inf")
8+
self.stack = []
9+
10+
def push(self, x: int) -> None:
11+
if x <= self.min_val:
12+
self.stack.append(self.min_val)
13+
self.min_val = x
14+
self.stack.append(x)
15+
16+
def pop(self) -> None:
17+
if (self.stack.pop() == self.min_val):
18+
self.min_val = self.stack.pop()
19+
20+
def top(self) -> int:
21+
return self.stack[-1]
22+
23+
def getMin(self) -> int:
24+
return self.min_val
25+
26+
27+
# Your MinStack object will be instantiated and called as such:
28+
# obj = MinStack()
29+
# obj.push(x)
30+
# obj.pop()
31+
# param_3 = obj.top()
32+
# param_4 = obj.getMin()

162. Find Peak Element.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
3+
def findPeakElement(self, nums: List[int]) -> int:
4+
left = 0
5+
right = len(nums) - 1
6+
while left < right:
7+
mid = left + (right - left) // 2
8+
if nums[mid] > nums[mid + 1]:
9+
right = mid
10+
else:
11+
left = mid + 1
12+
if nums[left] > nums[right]:
13+
return left
14+
else:
15+
return right

0 commit comments

Comments
 (0)