Skip to content

Commit 2513ec7

Browse files
committed
2019-07-27
1 parent ad48516 commit 2513ec7

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution(object):
2+
def isArmstrong(self, N):
3+
"""
4+
:type N: int
5+
:rtype: bool
6+
"""
7+
k = len(str(N))
8+
n = N
9+
s = 0
10+
while N:
11+
N, tmp = divmod(N, 10)
12+
s += tmp ** k
13+
return s == n
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution(object):
2+
def largestUniqueNumber(self, A):
3+
"""
4+
:type A: List[int]
5+
:rtype: int
6+
"""
7+
from collections import Counter
8+
dic = Counter(A)
9+
10+
res = -1
11+
for key, val in dic.items():
12+
if val == 1:
13+
res = max(res, key)
14+
return res
15+
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
class UnionFindSet(object):
2+
def __init__(self, n):
3+
4+
# m, n = len(grid), len(grid[0])
5+
self.roots = [i for i in range(n + 1)]
6+
self.rank = [0 for i in range(n + 1)]
7+
self.count = n
8+
9+
def find(self, member):
10+
tmp = []
11+
while member != self.roots[member]:
12+
tmp.append(member)
13+
member = self.roots[member]
14+
for root in tmp:
15+
self.roots[root] = member
16+
return member
17+
18+
def union(self, p, q):
19+
parentP = self.find(p)
20+
parentQ = self.find(q)
21+
if parentP != parentQ:
22+
if self.rank[parentP] > self.rank[parentQ]:
23+
self.roots[parentQ] = parentP
24+
elif self.rank[parentP] < self.rank[parentQ]:
25+
self.roots[parentP] = parentQ
26+
else:
27+
self.roots[parentQ] = parentP
28+
self.rank[parentP] -= 1
29+
self.count -= 1
30+
31+
class Solution(object):
32+
def minimumCost(self, N, connections):
33+
"""
34+
:type N: int
35+
:type conections: List[List[int]]
36+
:rtype: int
37+
"""
38+
from collections import deque
39+
from heapq import *
40+
ufs = UnionFindSet(N)
41+
queue = []
42+
43+
for start, end, cost in connections:
44+
ufs.union(start, end)
45+
queue.append([cost, start, end])
46+
47+
if ufs.count != 1:
48+
return -1 #无法连接在一起
49+
#到这里可以保证一定可以把所有城市连在一起
50+
ufs2 = UnionFindSet(N)
51+
heapify(queue)
52+
res = 0
53+
while ufs2.count > 1:
54+
cost, start, end = heappop(queue)
55+
if ufs2.find(start) == ufs2.find(end):
56+
continue
57+
ufs2.union(start, end)
58+
res += cost
59+
return res
60+
61+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class Solution(object):
2+
def minimumSemesters(self, N, relations):
3+
"""
4+
:type N: int
5+
:type relations: List[List[int]]
6+
:rtype: int
7+
"""
8+
indegree = [0 for i in range(N + 1)]
9+
adj = [set() for _ in range(N + 1)]
10+
for pre, cur in relations:
11+
indegree[cur] += 1
12+
adj[pre].add(cur)
13+
14+
from collections import deque
15+
queue = deque()
16+
for i, x in enumerate(indegree):
17+
if x == 0 and i > 0:
18+
queue.append(i)
19+
print queue
20+
cnt, res = 0, 0
21+
out = 0
22+
while queue:
23+
next_queue = deque()
24+
cnt += 1
25+
for cur in queue:
26+
out += 1
27+
for neighbor in adj[cur]:
28+
indegree[neighbor] -= 1
29+
30+
if indegree[neighbor] == 0:
31+
next_queue.append(neighbor)
32+
queue = next_queue
33+
return cnt if out == N else -1
34+
35+
36+

0 commit comments

Comments
 (0)