Skip to content

Commit 4c81607

Browse files
committed
2019-07-21
1 parent 0d4a198 commit 4c81607

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution(object):
2+
def trailingZeroes(self, n):
3+
"""
4+
:type n: int
5+
:rtype: int
6+
"""
7+
res = 0
8+
while n > 4:
9+
n //= 5
10+
res += n
11+
return res
12+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution(object):
2+
def numEquivDominoPairs(self, dominoes):
3+
"""
4+
:type dominoes: List[List[int]]
5+
:rtype: int
6+
"""
7+
from collections import defaultdict
8+
dic = defaultdict(int)
9+
res = 0
10+
for i, x in enumerate(dominoes):
11+
pair = (x[1], x[0])
12+
if x[0] < x[1]:
13+
pair = (x[0], x[1])
14+
res += dic[pair]
15+
dic[pair] += 1
16+
17+
return res
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution(object):
2+
def shortestAlternatingPaths(self, n, red_edges, blue_edges):
3+
"""
4+
:type n: int
5+
:type red_edges: List[List[int]]
6+
:type blue_edges: List[List[int]]
7+
:rtype: List[int]
8+
"""
9+
from collections import defaultdict, deque
10+
red_nei, blue_nei = defaultdict(set), defaultdict(set)
11+
12+
for start, end in red_edges: #记录下所有的从红色路径可以到达的邻居节点
13+
red_nei[start].add(end)
14+
for start, end in blue_edges: #记录下所有的从蓝色路径可以到达的邻居节点
15+
blue_nei[start].add(end)
16+
17+
visited = set()
18+
queue = deque()
19+
queue.append((0, -1)) # -1 无色, 0 红色, 1蓝色
20+
distance = 0
21+
res = [-1] * n
22+
while queue:
23+
next_queue = deque()
24+
for cur, color in queue:
25+
if res[cur] == -1: #BFS保障了第一次到达终点时的距离一定是最短距离
26+
res[cur] = distance
27+
if color == -1 or color == 0: #当前是红色,下一次在蓝色里找
28+
for nei in blue_nei[cur]:
29+
if (cur, nei, 1) not in visited:
30+
visited.add((cur, nei, 1))
31+
next_queue.append((nei, 1))
32+
if color == -1 or color == 1: #当前是蓝色,下一次在红色里找
33+
for nei in red_nei[cur]:
34+
if (cur, nei, 0) not in visited:
35+
visited.add((cur, nei, 0))
36+
next_queue.append((nei, 0))
37+
queue = next_queue
38+
distance += 1
39+
return res
40+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution(object):
2+
def maxAbsValExpr(self, arr1, arr2):
3+
"""
4+
:type arr1: List[int]
5+
:type arr2: List[int]
6+
:rtype: int
7+
"""
8+
record = [-2 ** 31] * 8
9+
10+
for i in range(len(arr1)):
11+
for k in range(8): #生成八种可能的结果
12+
t = 0
13+
if k & 1:
14+
t += arr1[i]
15+
else:
16+
t -= arr1[i]
17+
if k & 2:
18+
t += arr2[i]
19+
else:
20+
t -= arr2[i]
21+
if k & 4:
22+
t += i
23+
else:
24+
t -= i
25+
# print k, t
26+
record[k] = max(record[k], t)
27+
# print record
28+
res = 0
29+
for k in range(8):
30+
# print k, ~k
31+
res = max(res, record[k] + record[-k-1]) #第一项和最后一项,第二项和倒数第二项,两项之和一定是满足表达式的
32+
return res
33+
34+

0 commit comments

Comments
 (0)