Skip to content

Commit 1824f59

Browse files
authored
partially completed weekly contest 426
1 parent 31880c5 commit 1824f59

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def getLargestOutlier(self, nums: List[int]) -> int:
6+
sum, cnt = 0, {}
7+
for num in nums:
8+
sum += num
9+
cnt[num] = cnt.get(num, 0) + 1
10+
11+
for num in sorted(set(nums), reverse=True):
12+
tmp = sum - num
13+
if tmp % 2:
14+
continue
15+
16+
cnt[num] -= 1
17+
if cnt.get(tmp // 2, 0):
18+
return num
19+
cnt[num] += 1
20+
return -1
21+
22+
23+
print(Solution().getLargestOutlier(nums=[2, 3, 5, 10]))
24+
print(Solution().getLargestOutlier(nums=[1, 1, 1, 1, 1, 5, 5]))
25+
print(Solution().getLargestOutlier(nums=[-2, -1, -3, -6, 4]))
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def maxTargetNodes(
6+
self, edges1: List[List[int]], edges2: List[List[int]], k: int
7+
) -> List[int]:
8+
n, m = 0, 0
9+
adj1, adj2 = {}, {}
10+
for u, v in edges1:
11+
n = max(n, u + 1, v + 1)
12+
adj1.setdefault(u, []).append(v)
13+
adj1.setdefault(v, []).append(u)
14+
for u, v in edges2:
15+
m = max(m, u + 1, v + 1)
16+
adj2.setdefault(u, []).append(v)
17+
adj2.setdefault(v, []).append(u)
18+
19+
cnt1, cnt2 = [0] * n, [0] * m
20+
for i in range(n):
21+
queue = [(i, 0)]
22+
visited = {i}
23+
while queue:
24+
u, d = queue.pop(0)
25+
if d > k:
26+
break
27+
cnt1[i] += 1
28+
29+
for v in adj1.get(u, []):
30+
if v not in visited:
31+
visited.add(v)
32+
queue.append((v, d + 1))
33+
for i in range(m):
34+
queue = [(i, 0)]
35+
visited = {i}
36+
while queue:
37+
u, d = queue.pop(0)
38+
if d >= k:
39+
break
40+
cnt2[i] += 1
41+
42+
for v in adj2.get(u, []):
43+
if v not in visited:
44+
visited.add(v)
45+
queue.append((v, d + 1))
46+
max2 = max(cnt2)
47+
return [c + max2 for c in cnt1]
48+
49+
50+
print(
51+
Solution().maxTargetNodes(
52+
edges1=[[0, 1], [0, 2], [2, 3], [2, 4]],
53+
edges2=[[0, 1], [0, 2], [0, 3], [2, 7], [1, 4], [4, 5], [4, 6]],
54+
k=2,
55+
)
56+
)
57+
58+
print(
59+
Solution().maxTargetNodes(
60+
edges1=[[0, 1], [0, 2], [0, 3], [0, 4]], edges2=[[0, 1], [1, 2], [2, 3]], k=1
61+
)
62+
)
63+
64+
print(
65+
Solution().maxTargetNodes(
66+
[[2, 1], [7, 3], [0, 4], [7, 5], [2, 6], [0, 2], [0, 7]],
67+
[[3, 0], [1, 2], [5, 1], [6, 3], [9, 4], [5, 6], [7, 5], [9, 7], [8, 9]],
68+
7,
69+
)
70+
)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def smallestNumber(self, n: int) -> int:
3+
ret = 0
4+
while n:
5+
ret = (ret << 1) + 1
6+
n >>= 1
7+
return ret
8+
9+
10+
print(Solution().smallestNumber(5))
11+
print(Solution().smallestNumber(10))
12+
print(Solution().smallestNumber(3))

0 commit comments

Comments
 (0)