Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 356ba7d

Browse files
2020年10月15日
1 parent d136bd3 commit 356ba7d

File tree

5 files changed

+131
-59
lines changed

5 files changed

+131
-59
lines changed

‎0198.打家劫舍/0198-打家劫舍.py‎

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@ def rob(self, nums):
44
:type nums: List[int]
55
:rtype: int
66
"""
7-
# return 0
8-
if not nums:
7+
if len(nums) == 0:
98
return 0
10-
dp = [0 for _ in nums]
11-
dp[0] = nums[0]
12-
for i in range(1, len(nums)):
13-
if i == 1:
14-
dp[i] = max(dp[0], nums[i])
15-
else:
16-
dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])
17-
return dp[-1]
18-
9+
if len(nums) <= 2:
10+
return max(nums)
11+
nums[1] = max(nums[0], nums[1])
12+
for i in range(2, len(nums)):
13+
nums[i] = max(nums[i - 2] + nums[i], nums[i - 1])
14+
return max(nums) if nums else 0
Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,31 @@
1-
class Solution(object):
2-
def numIslands(self, M):
3-
"""
4-
:type grid: List[List[str]]
5-
:rtype: int
6-
"""
7-
if not M or not M[0]:
1+
class Solution:
2+
def numIslands(self, grid: List[List[str]]) -> int:
3+
from collections import deque
4+
if not grid or not grid[0]:
85
return 0
9-
m, n=len(M), len(M[0])
10-
visited= [[0forjinrange(n)] foriinrange(m)]
11-
# print visited
6+
7+
m, n=len(grid), len(grid[0])
8+
129
dx = [1, -1, 0, 0]
1310
dy = [0, 0, 1, -1]
14-
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)
2411

12+
res = 0
2513
for i in range(m):
2614
for j in range(n):
27-
if M[i][j] == '1' and visited[i][j] == 0:
15+
if grid[i][j] == "1":
16+
grid[i][j] = "0"
2817
res += 1
29-
visited[i][j] = 1
30-
dfs(i, j)
31-
# print visited
3218

19+
queue = deque([(i, j)])
20+
21+
while queue:
22+
x0, y0 = queue.popleft()
23+
for k in range(4):
24+
x = x0 + dx[k]
25+
y = y0 + dy[k]
26+
27+
if 0 <= x < m and 0 <= y < n and grid[x][y] == "1":
28+
grid[x][y] = "0"
29+
queue.append((x, y))
30+
3331
return res

‎0286.墙与门/0286-墙与门.py‎

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,29 @@
1-
class Solution(object):
2-
def wallsAndGates(self, rooms):
1+
class Solution:
2+
def wallsAndGates(self, rooms: List[List[int]]) ->None:
33
"""
4-
:type rooms: List[List[int]]
5-
:rtype: None Do not return anything, modify rooms in-place instead.
4+
Do not return anything, modify rooms in-place instead.
65
"""
76
from collections import deque
7+
88
if not rooms or not rooms[0]:
99
return rooms
10-
m, n = len(rooms), len(rooms[0])
11-
dx = [1, -1, 0, 0]
12-
dy = [0, 0, 1, -1]
1310
INF = 2147483647
14-
queue = deque()
15-
def bfs(queue):
16-
while queue:
17-
pos = queue.popleft()
18-
x0, y0 = pos
19-
20-
for k in range(4):
21-
x = x0 + dx[k]
22-
y = y0 + dy[k]
23-
if 0 <= x < m and 0 <= y < n and rooms[x][y] == INF:
24-
rooms[x][y] = rooms[x0][y0] + 1
25-
queue.append((x, y))
26-
11+
12+
m, n = len(rooms), len(rooms[0])
13+
queue = deque() # (x_pos, y_pos, step from a gate)
2714
for i in range(m):
2815
for j in range(n):
29-
if rooms[i][j] == 0: #ÏÖÔÚ ́ÓÿÉÈÃÅ3ö·¢
30-
queue.append((i, j))
31-
bfs(queue)
32-
return rooms
16+
if rooms[i][j] == 0:
17+
queue.append((i, j, 0))
18+
19+
dx = [1, -1, 0, 0]
20+
dy = [0, 0, 1, -1]
21+
while queue:
22+
x_pos, y_pos, step = queue.popleft()
23+
for k in range(4):
24+
x = x_pos + dx[k]
25+
y = y_pos + dy[k]
26+
27+
if 0 <= x < m and 0 <= y < n and rooms[x][y] == INF:
28+
rooms[x][y] = step + 1
29+
queue.append((x, y, step + 1))
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Codec:
9+
def serialize(self, root):
10+
"""Encodes a tree to a single string.
11+
12+
:type root: TreeNode
13+
:rtype: str
14+
"""
15+
if not root:
16+
return ""
17+
18+
s = ""
19+
def preorder(node):
20+
if not node:
21+
return "#"
22+
23+
return str(node.val) + "," + preorder(node.left) + "," +preorder(node.right)
24+
s = preorder(root)
25+
return s
26+
27+
def deserialize(self, data):
28+
"""Decodes your encoded data to tree.
29+
30+
:type data: str
31+
:rtype: TreeNode
32+
"""
33+
if not data or data == "#":
34+
return None
35+
queue = deque(data.split(","))
36+
return self.helper(queue)
37+
38+
def helper(self, queue):
39+
cur = queue.popleft()
40+
if cur == "#":
41+
return None
42+
root = TreeNode(cur)
43+
root.left = self.helper(queue)
44+
root.right = self.helper(queue)
45+
46+
return root
47+
48+
# Your Codec object will be instantiated and called as such:
49+
# ser = Codec()
50+
# deser = Codec()
51+
# ans = deser.deserialize(ser.serialize(root))
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution(object):
8+
def findTarget(self, root, k):
9+
"""
10+
:type root: TreeNode
11+
:type k: int
12+
:rtype: bool
13+
"""
14+
values = set()
15+
16+
self.result = False
17+
def inorderTraversal(node):
18+
if not node:
19+
return []
20+
if not self.result:
21+
if k - node.val in values:
22+
self.result = True
23+
return
24+
values.add(node.val)
25+
26+
inorderTraversal(node.left)
27+
inorderTraversal(node.right)
28+
inorderTraversal(root)
29+
return self.result
30+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /