File tree Expand file tree Collapse file tree 5 files changed +131
-59
lines changed Expand file tree Collapse file tree 5 files changed +131
-59
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 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 = [[ 0 for j in range ( n )] for i in range ( 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
Original file line number Diff line number Diff line change 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 : #ÏÖÔÚ´ÓÿÉÈÃųö·¢
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 ))
Original file line number Diff line number Diff line change 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))
Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments