Skip to content

Commit 7548689

Browse files
committed
2019-06-30
1 parent 7891e9b commit 7548689

File tree

5 files changed

+102
-3
lines changed

5 files changed

+102
-3
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution(object):
2+
def pathInZigZagTree(self, label):
3+
"""
4+
:type label: int
5+
:rtype: List[int]
6+
"""
7+
def findLayer(target, root_val, layer): #找某个label是在第几层
8+
if root_val + 2 ** (layer) < target:
9+
return findLayer(target, root_val + 2 ** (layer), layer + 1)
10+
else:
11+
return layer + 1
12+
13+
layer = findLayer(label, 1, 1)
14+
res = []
15+
while label > 1:
16+
for i in range(2 ** (layer - 1), 2 **(layer)):
17+
if i == label:#在当前层找到了label
18+
idx = i - 2 ** (layer - 1) #label在本层的下标
19+
parentidx = (2 ** (layer - 1) - 1 - idx )// 2 #label的父节点在上一层的下标
20+
# print cnt, parentcnt
21+
break
22+
res = [label] + res
23+
label = [i for i in range(2 ** (layer - 2), 2 **(layer - 1))][parentidx]
24+
layer -= 1
25+
return [1] + res

1104.分糖果II/1104-分糖果II.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution(object):
2+
def distributeCandies(self, candies, n):
3+
"""
4+
:type candies: int
5+
:type num_people: int
6+
:rtype: List[int]
7+
"""
8+
res = [0 for _ in range(n)]
9+
multi = 0
10+
while candies > 0:
11+
for i in range(len(res)):
12+
distri = i + 1 + multi * n
13+
if candies > distri:
14+
res[i] += distri
15+
candies -= distri
16+
else:
17+
res[i] += candies
18+
candies = 0
19+
break
20+
multi += 1
21+
return res
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution(object):
2+
def minHeightShelves(self, books, shelf_width):
3+
"""
4+
:type books: List[List[int]]
5+
:type shelf_width: int
6+
:rtype: int
7+
"""
8+
dp = [999999999 for _ in range(len(books) + 1)]
9+
dp[0] = 0
10+
for i in range(1, len(books) + 1):
11+
w, h = 0, 0
12+
for j in range(i - 1, -1, -1):
13+
w += books[j][0]
14+
if w > shelf_width:
15+
break
16+
h = max(h, books[j][1])
17+
dp[i] = min(dp[i], dp[j] + h)
18+
return dp[-1]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution(object):
2+
def parseBoolExpr(self, exp):
3+
"""
4+
:type expression: str
5+
:rtype: bool
6+
"""
7+
symbol = []
8+
stack = []
9+
op = ["|", "&", "!"]
10+
11+
for c in exp:
12+
if c == "t":
13+
stack.append(True)
14+
elif c == "f":
15+
stack.append(False)
16+
elif c in op:
17+
symbol.append(c)
18+
elif c == ",":
19+
continue
20+
elif c == "(":
21+
stack.append(c)
22+
else:
23+
o = symbol.pop()
24+
tmp = stack[-1]
25+
while stack and stack[-1] != "(":
26+
if o == "|":
27+
tmp |= stack.pop()
28+
elif o == "&":
29+
tmp &= stack.pop()
30+
else:
31+
tmp = not stack.pop()
32+
stack.pop()
33+
stack.append(tmp)
34+
# print stack
35+
return stack[0]

5035.得分最高的路径/5035-得分最高的路径.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@ def maximumMinimumPath(self, A):
1717
visited = set([0,0])
1818
heapify(queue)
1919
while queue:
20-
val, x0, y0 = heappop(queue) #把目前队里最大的点找出来
20+
score, x0, y0 = heappop(queue) #把目前队里最优的点找出来
2121
if [x0, y0] == [m - 1, n - 1]: #如果已经到终点了
22-
return -val
22+
return -score
2323

2424
for k in range(4):
2525
x = x0 + dx[k]
2626
y = y0 + dy[k]
2727

2828
if 0 <= x < m and 0 <= y < n and (x, y) not in visited:
2929
visited.add((x, y))
30-
heappush(queue, [max(val, -A[x][y]), x, y]) #邻居入队
30+
heappush(queue, [max(score, -A[x][y]), x, y]) #邻居点入队
3131

3232

3333

0 commit comments

Comments
 (0)