Skip to content

Commit 1e65763

Browse files
authored
Add files via upload
1 parent f39e124 commit 1e65763

13 files changed

+246
-0
lines changed

3Sum - Leetcode 15.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution:
2+
def threeSum(self, nums: List[int]) -> List[List[int]]:
3+
h = {}
4+
n = len(nums)
5+
s = set()
6+
7+
for i, num in enumerate(nums):
8+
h[num] = i
9+
10+
for i in range(n):
11+
for j in range(i + 1, n):
12+
desired = -nums[i] - nums[j]
13+
if desired in h and h[desired] != i and h[desired] != j:
14+
s.add(tuple(sorted([nums[i], nums[j], desired])))
15+
16+
return s
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def maxArea(self, height: List[int]) -> int:
3+
n = len(height)
4+
l = 0
5+
r = n - 1
6+
max_area = 0
7+
8+
while l < r:
9+
w = r - l
10+
h = min(height[l], height[r])
11+
a = w * h
12+
max_area = max(max_area, a)
13+
if height[l] < height[r]:
14+
l += 1
15+
else:
16+
r -= 1
17+
18+
return max_area

Daily Temperatures - Leetcode 739.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
3+
temps = temperatures
4+
n = len(temps)
5+
answer = [0] * n
6+
stk = []
7+
8+
for i, t in enumerate(temps):
9+
while stk and stk[-1][0] < t:
10+
stk_t, stk_i = stk.pop()
11+
answer[stk_i] = i - stk_i
12+
13+
stk.append((t, i))
14+
return answer
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from math import ceil, floor
2+
class Solution:
3+
def evalRPN(self, tokens: List[str]) -> int:
4+
stk = []
5+
for t in tokens:
6+
if t in "+-*/":
7+
b, a = stk.pop(), stk.pop()
8+
9+
if t == "+":
10+
stk.append(a + b)
11+
elif t == "-":
12+
stk.append(a - b)
13+
elif t == "*":
14+
stk.append(a * b)
15+
else:
16+
division = a / b
17+
if division < 0:
18+
stk.append(ceil(division))
19+
else:
20+
stk.append(floor(division))
21+
else:
22+
stk.append(int(t))
23+
return stk[0]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def longestConsecutive(self, nums: List[int]) -> int:
3+
s = set(nums)
4+
longest = 0
5+
for num in nums:
6+
if num - 1 not in s:
7+
next_num = num + 1
8+
length = 1
9+
while next_num in s:
10+
length += 1
11+
next_num += 1
12+
longest = max(longest, length)
13+
14+
return longest

Min Stack - Leetcode 155.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class MinStack:
2+
def __init__(self):
3+
self.stk = []
4+
self.min_stk = []
5+
6+
def push(self, val: int) -> None:
7+
self.stk.append(val)
8+
if not self.min_stk:
9+
self.min_stk.append(val)
10+
elif self.min_stk[-1] < val:
11+
self.min_stk.append(self.min_stk[-1])
12+
else:
13+
self.min_stk.append(val)
14+
15+
def pop(self) -> None:
16+
self.stk.pop()
17+
self.min_stk.pop()
18+
19+
def top(self) -> int:
20+
return self.stk[-1]
21+
22+
def getMin(self) -> int:
23+
return self.min_stk[-1]

Reverse String - Leetcode 344.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def reverseString(self, s: List[str]) -> None:
3+
"""
4+
Do not return anything, modify s in-place instead.
5+
"""
6+
n = len(s)
7+
l = 0
8+
r = n - 1
9+
while l < r:
10+
s[l], s[r] = s[r], s[l]
11+
l += 1
12+
r -= 1
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
def sortedSquares(self, nums: List[int]) -> List[int]:
3+
left = 0
4+
right = len(nums) - 1
5+
result = []
6+
7+
while left <= right:
8+
if abs(nums[left]) > abs(nums[right]):
9+
result.append(nums[left] ** 2)
10+
left += 1
11+
else:
12+
result.append(nums[right] ** 2)
13+
right -= 1
14+
15+
result.reverse()
16+
17+
return result

Trapping Rain Water - Leetcode 42.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution:
2+
def trap(self, height: List[int]) -> int:
3+
l_wall = r_wall = 0
4+
n = len(height)
5+
max_left = [0] * n
6+
max_right = [0] * n
7+
8+
for i in range(n):
9+
j = -i - 1
10+
max_left[i] = l_wall
11+
max_right[j] = r_wall
12+
l_wall = max(l_wall, height[i])
13+
r_wall = max(r_wall, height[j])
14+
15+
summ = 0
16+
for i in range(n):
17+
pot = min(max_left[i], max_right[i])
18+
summ += max(0, pot - height[i])
19+
20+
return summ

Two Sum II - Leetcode 167.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def twoSum(self, numbers: List[int], target: int) -> List[int]:
3+
n = len(numbers)
4+
l = 0
5+
r = n - 1
6+
7+
while l < r:
8+
summ = numbers[l] + numbers[r]
9+
if summ == target:
10+
return [l + 1, r + 1]
11+
elif summ < target:
12+
l += 1
13+
else:
14+
r -= 1

0 commit comments

Comments
 (0)