Skip to content

Commit 6bd9521

Browse files
committedJan 23, 2020
2020-01-22
1 parent 06fdad2 commit 6bd9521

File tree

4 files changed

+158
-0
lines changed

4 files changed

+158
-0
lines changed
 
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution(object):
2+
def minFlips(self, a, b, c):
3+
"""
4+
:type a: int
5+
:type b: int
6+
:type c: int
7+
:rtype: int
8+
"""
9+
res = 0
10+
while a or b or c:
11+
if (a & 1 | b & 1) != (c & 1):
12+
res += 1 + (a & 1) * (b & 1)
13+
a, b, c = a >> 1, b >> 1, c >> 1
14+
return res
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
2+
class UnionFindSet(object):
3+
def __init__(self, n):
4+
self.roots = [i for i in range(n)]
5+
self.rank = [0 for i in range(n)]
6+
self.count = n
7+
8+
def find(self, member):
9+
tmp = []
10+
while member != self.roots[member]:
11+
tmp.append(member)
12+
member = self.roots[member]
13+
for root in tmp:
14+
self.roots[root] = member
15+
return member
16+
17+
def union(self, p, q):
18+
parentP = self.find(p)
19+
parentQ = self.find(q)
20+
if parentP != parentQ:
21+
if self.rank[parentP] > self.rank[parentQ]:
22+
self.roots[parentQ] = parentP
23+
elif self.rank[parentP] < self.rank[parentQ]:
24+
self.roots[parentP] = parentQ
25+
else:
26+
self.roots[parentQ] = parentP
27+
self.rank[parentP] -= 1
28+
self.count -= 1
29+
30+
31+
class Solution(object):
32+
def makeConnected(self, n, connections):
33+
"""
34+
:type n: int
35+
:type connections: List[List[int]]
36+
:rtype: int
37+
"""
38+
if len(connections) < n - 1:
39+
return -1
40+
41+
res = 0
42+
ufs = UnionFindSet(n)
43+
for s, e in connections:
44+
ufs.union(s, e)
45+
46+
return ufs.count - 1
47+
48+
49+
50+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution(object):
2+
def printVertically(self, s):
3+
"""
4+
:type s: str
5+
:rtype: List[str]
6+
"""
7+
8+
l = s.split(" ")
9+
max_l = max([len(item) for item in l])
10+
11+
res = [""] * max_l
12+
for i in range(max_l):
13+
tmp = ""
14+
for j in range(len(l)):
15+
if len(l[j]) > i:
16+
tmp += l[j][i]
17+
else:
18+
tmp += " "
19+
res[i] = tmp.rstrip()
20+
21+
return res
22+
# l = s.split(" ")
23+
# res = []
24+
# for item in zip(*l):
25+
# res.append("".join(item))
26+
# return res
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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 Solution(object):
9+
def removeLeafNodes(self, root, target):
10+
"""
11+
:type root: TreeNode
12+
:type target: int
13+
:rtype: TreeNode
14+
"""
15+
if not root:
16+
return root
17+
root.left = self.removeLeafNodes(root.left, target)
18+
root.right = self.removeLeafNodes(root.right, target)
19+
if not root.left and not root.right and root.val == target:
20+
return None
21+
return root
22+
23+
# from collections import defaultdict, deque
24+
# if not root:
25+
# return root
26+
# outdegree = dict()
27+
# parent = dict()
28+
29+
# # 层序遍历预处理
30+
# queue = deque([root])
31+
# while queue:
32+
# for _ in range(len(queue)):
33+
# cur = queue.popleft()
34+
# outdegree[cur] = 0
35+
# if cur.left:
36+
# outdegree[cur] += 1
37+
# parent[cur.left] = cur
38+
# queue.append(cur.left)
39+
# if cur.right:
40+
# outdegree[cur] += 1
41+
# parent[cur.right] = cur
42+
# queue.append(cur.right)
43+
44+
# queue = deque([])
45+
# for key, val in outdegree.items():
46+
# if not val and key.val == target:
47+
# queue.append(key)
48+
49+
# while queue:
50+
# cur = queue.popleft()
51+
# if cur not in parent:
52+
# return None
53+
# par = parent[cur]
54+
# if par.left and par.left == cur:
55+
# par.left = None
56+
# outdegree[par] -= 1
57+
# if par.right and par.right == cur:
58+
# par.right = None
59+
# outdegree[par] -= 1
60+
61+
# if outdegree[par] == 0 and par.val == target:
62+
# queue.append(par)
63+
64+
# return root
65+
66+
67+
68+

0 commit comments

Comments
 (0)
Please sign in to comment.