Skip to content

Commit 8391863

Browse files
committed
2020-07-12
1 parent 90d27e4 commit 8391863

File tree

7 files changed

+64
-34
lines changed

7 files changed

+64
-34
lines changed

.DS_Store

0 Bytes
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution(object):
2+
def calculateMinimumHP(self, dungeon):
3+
"""
4+
:type dungeon: List[List[int]]
5+
:rtype: int
6+
"""
7+
if len(dungeon[0])==0:
8+
return 1
9+
dungeon[-1][-1] = max(1,1-dungeon[-1][-1])
10+
# 边界
11+
for i in range(len(dungeon)-2,-1,-1):
12+
dungeon[i][-1] = max(1,dungeon[i+1][-1]-dungeon[i][-1])
13+
for j in range(len(dungeon[0])-2,-1,-1):
14+
dungeon[-1][j] = max(1,dungeon[-1][j+1]-dungeon[-1][j])
15+
16+
for i in range(len(dungeon)-2,-1,-1):
17+
for j in range(len(dungeon[0])-2,-1,-1):
18+
dungeon[i][j] = max(1,min(dungeon[i][j+1]-dungeon[i][j],dungeon[i+1][j]-dungeon[i][j]))
19+
# print(dungeon)
20+
return dungeon[0][0]
+20-16
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,33 @@
11
class Solution(object):
2-
def numIslands(self, grid):
2+
def numIslands(self, M):
33
"""
44
:type grid: List[List[str]]
55
:rtype: int
66
"""
7-
if not grid or not grid[0]:
7+
if not M or not M[0]:
88
return 0
9-
m, n = len(grid), len(grid[0])
9+
m, n = len(M), len(M[0])
10+
visited = [[0 for j in range(n)] for i in range(m)]
11+
# print visited
1012
dx = [1, -1, 0, 0]
1113
dy = [0, 0, 1, -1]
12-
def dfs(x, y):
13-
for k in range(4):
14-
xx = x + dx[k]
15-
yy = y + dy[k]
16-
17-
if 0 <= xx < m and 0 <= yy < n and grid[xx][yy] == "1":
18-
grid[xx][yy] = "0"
19-
dfs(xx, yy)
20-
21-
2214
res = 0
15+
16+
def dfs(x0, y0):
17+
for k in range(4):
18+
x = x0 + dx[k]
19+
y = y0 + dy[k]
20+
# print x, y
21+
if 0<= x < m and 0 <= y < n and M[x][y] == '1' and visited[x][y] ==0:
22+
visited[x][y] = 1
23+
dfs(x, y)
24+
2325
for i in range(m):
2426
for j in range(n):
25-
if grid[i][j] == "1":
26-
grid[i][j] = "0"
27-
dfs(i, j)
27+
if M[i][j] == '1' and visited[i][j] == 0:
2828
res += 1
29+
visited[i][j] = 1
30+
dfs(i, j)
31+
# print visited
32+
2933
return res

0315.计算右侧小于当前元素的个数/0315-计算右侧小于当前元素的个数.py

+5-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ def countSmaller(self, nums):
1111
:type nums: List[int]
1212
:rtype: List[int]
1313
"""
14-
1514
# 从左往右处理,右边是未知的,所以不好弄
1615
# 从右往左处理,则对于每个数,其右边的数都已知
1716
res = [0 for _ in nums]
@@ -21,15 +20,13 @@ def countSmaller(self, nums):
2120
return res[::-1]
2221

2322
def insert(self, root, val, i, res):
24-
if not root:
23+
if not root: #如果当前root为空
2524
root = TreeNode(val)
26-
elif root.val >= val:
25+
elif root.val >= val: # 如果应该插入左子树
2726
root.left_subtree_cnt += 1
2827
root.left = self.insert(root.left, val, i, res)
29-
elif root.val < val:
30-
res[i] += root.left_subtree_cnt + 1
28+
elif root.val < val: # 如果应该插入右子树
29+
res[i] += root.left_subtree_cnt + 1 # 1 代表当前root
3130
root.right = self.insert(root.right, val, i, res)
3231

33-
return root
34-
35-
32+
return root

0350.两个数组的交集II/0350-两个数组的交集II.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ def intersect(self, nums1, nums2):
55
:type nums2: List[int]
66
:rtype: List[int]
77
"""
8+
from collections import Counter
9+
dic1 = Counter(nums1)
10+
dic2 = Counter(nums2)
11+
812
res = []
9-
for i in range(0,len(nums1)):
10-
if nums1[i] in nums2:
11-
nums2.remove(nums1[i])
12-
# print nums1,nums2
13-
res.append(nums1[i])
14-
15-
# print nums1,nums2,res
13+
for key, val in dic1.items():
14+
res += [key] * min(val, dic2[key])
1615
return res

1509.三次操作后最大值与最小值的最小差/1509-三次操作后最大值与最小值的最小差.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ def minDifference(self, nums):
77
if len(nums) <= 4:
88
return 0
99
nums.sort()
10-
10+
# print nums
1111
# 1. 去前三个
1212
res = nums[-1] - nums[3]
1313
# 2. 去前两个和最后一个
1414
res = min(res, nums[-2] - nums[2])
15-
# 3. 去第一个和最后两个
1615
res = min(res, nums[-3] - nums[1])
17-
# 4. 去最后三个
1816
res = min(res, nums[-4] - nums[0])
1917
return res
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution(object):
2+
def waysToChange(self, n):
3+
"""
4+
:type n: int
5+
:rtype: int
6+
"""
7+
coin = [1, 5, 10, 25]
8+
dp = [1] + [0] * n
9+
for c in coin:
10+
for i in range(c, n + 1):
11+
dp[i] += dp[i - c]
12+
return dp[-1] % (10**9 + 7)

0 commit comments

Comments
 (0)