Skip to content

Commit a01947b

Browse files
committed
upload on 3/22
1 parent bf00cbe commit a01947b

8 files changed

+183
-0
lines changed

164. Maximum Gap.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution:
2+
3+
def maximumGap(self, nums: List[int]) -> int:
4+
n = len(nums)
5+
if n <= 1:
6+
return 0
7+
min_val = min(nums)
8+
max_val = max(nums)
9+
gap = math.ceil((float)(max_val - min_val) / (n - 1))
10+
11+
bucket_min = [float("inf")] * (n - 1)
12+
bucket_max = [float("-inf")] * (n - 1)
13+
14+
for num in nums:
15+
if num == min_val or num == max_val:
16+
continue
17+
idx = (num - min_val) // gap
18+
bucket_min[idx] = min(bucket_min[idx], num)
19+
bucket_max[idx] = max(bucket_max[idx], num)
20+
print(bucket_min, bucket_max)
21+
prev = min_val
22+
max_gap = 0
23+
for i in range(n - 1):
24+
if bucket_min[i] == float("inf") or bucket_max[i] == float("-inf"):
25+
continue
26+
max_gap = max(max_gap, bucket_min[i] - prev)
27+
prev = bucket_max[i]
28+
max_gap = max(max_gap, max_val - prev)
29+
30+
return max_gap

165. Compare Version Numbers.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution:
2+
3+
def compareVersion(self, version1: str, version2: str) -> int:
4+
5+
v1 = version1.split(".")
6+
v2 = version2.split(".")
7+
v1 = list(map(int, v1))
8+
v2 = list(map(int, v2))
9+
len1 = len(v1)
10+
len2 = len(v2)
11+
if len1 > len2:
12+
for i in range(len1 - len2):
13+
v2 = v2 + [0]
14+
else:
15+
for i in range(len2 - len1):
16+
v1 = v1 + [0]
17+
a1 = 0
18+
a2 = 0
19+
for i in range(len(v1)):
20+
a1 = a1 * 10 + v1[i]
21+
a2 = a2 * 10 + v2[i]
22+
if a1 > a2:
23+
return 1
24+
elif a1 < a2:
25+
return -1
26+
else:
27+
return 0
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
3+
def twoSum(self, numbers: List[int], target: int) -> List[int]:
4+
n = len(numbers)
5+
s = 0
6+
e = n - 1
7+
while s < e:
8+
if numbers[s] + numbers[e] == target:
9+
return [s + 1, e + 1]
10+
elif numbers[s] + numbers[e] > target:
11+
e -= 1
12+
elif numbers[s] + numbers[e] < target:
13+
s += 1

70. Climbing Stairs.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
3+
def climbStairs(self, n: int) -> int:
4+
# step = [0] * (n+1)
5+
# step[0] = 1
6+
# step[1] = 1
7+
# for i in range(2, n+1):
8+
# step[i] = step[i-1] + step[i-2]
9+
# return step[-1]
10+
if n == 1:
11+
return 1
12+
prev = 1
13+
prev_prev = 1
14+
cur = 0
15+
for i in range(2, n + 1):
16+
cur = prev + prev_prev
17+
prev_prev = prev
18+
prev = cur
19+
return cur

72. Edit Distance.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
3+
def minDistance(self, word1: str, word2: str) -> int:
4+
m = len(word1)
5+
n = len(word2)
6+
aux = [[0] * (n + 1) for _ in range(m + 1)]
7+
8+
for i in range(m + 1):
9+
aux[i][0] = i
10+
for j in range(n + 1):
11+
aux[0][j] = j
12+
13+
for i in range(1, m + 1):
14+
for j in range(1, n + 1):
15+
step = int(word1[i - 1] != word2[j - 1])
16+
aux[i][j] = min(1 + aux[i - 1][j], 1 + aux[i][j - 1], step + aux[i - 1][j - 1])
17+
return aux[-1][-1]

73. Set Matrix Zeroes.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution:
2+
3+
def setZeroes(self, matrix: List[List[int]]) -> None:
4+
"""
5+
Do not return anything, modify matrix in-place instead.
6+
"""
7+
m = len(matrix)
8+
if m == 0:
9+
reutrn
10+
n = len(matrix[0])
11+
12+
setr = set()
13+
setc = set()
14+
15+
for i in range(m):
16+
for j in range(n):
17+
if matrix[i][j] == 0:
18+
setr.add(i)
19+
setc.add(j)
20+
for item in setr:
21+
for c in range(n):
22+
matrix[item][c] = 0
23+
24+
for item in setc:
25+
for r in range(m):
26+
matrix[r][item] = 0

74. Search a 2D Matrix.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution:
2+
3+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
4+
m = len(matrix)
5+
if m == 0:
6+
return False
7+
n = len(matrix[0])
8+
9+
if n == 0:
10+
return False
11+
row = []
12+
for i in range(m):
13+
row.append(matrix[i][0])
14+
15+
# row search
16+
idx, flag = self.helper(row, 0, m - 1, target)
17+
if flag:
18+
return True
19+
20+
idx, flag = self.helper(matrix[idx], 0, n - 1, target)
21+
22+
return flag
23+
24+
def helper(self, lst, start, end, target):
25+
if start > end:
26+
return start - 1, False
27+
mid = (start + end) // 2
28+
if target == lst[mid]:
29+
return mid, True
30+
if target > lst[mid]:
31+
return self.helper(lst, mid + 1, end, target)
32+
else:
33+
return self.helper(lst, start, mid - 1, target)

75. Sort Colors.py

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

0 commit comments

Comments
 (0)