Factors¶
Table of Contents¶
- 2427. Number of Common Factors (Easy)
- 1952. Three Divisors (Easy)
- 1492. The kth Factor of n (Medium)
- 507. Perfect Number (Easy)
- 1390. Four Divisors (Medium)
- 1362. Closest Divisors (Medium)
- 829. Consecutive Numbers Sum (Hard)
- 3447. Assign Elements to Groups with Constraints (Medium)
- 3164. Find the Number of Good Pairs II (Medium)
- 952. Largest Component Size by Common Factor (Hard)
- 1627. Graph Connectivity With Threshold (Hard)
- 2198. Number of Single Divisor Triplets (Medium) 👑
- 625. Minimum Factorization (Medium) 👑
- 2847. Smallest Number With Given Digit Product (Medium) 👑
2427. Number of Common Factors¶
-
LeetCode | LeetCode CH (Easy)
-
Tags: math, enumeration, number theory
1952. Three Divisors¶
-
LeetCode | LeetCode CH (Easy)
-
Tags: math, enumeration, number theory
1492. The kth Factor of n¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: math, number theory
507. Perfect Number¶
-
LeetCode | LeetCode CH (Easy)
-
Tags: math
1390. Four Divisors¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, math
1362. Closest Divisors¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: math
829. Consecutive Numbers Sum¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: math, enumeration
3447. Assign Elements to Groups with Constraints¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, hash table
3164. Find the Number of Good Pairs II¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, hash table
952. Largest Component Size by Common Factor¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, hash table, math, union find, number theory
from collections import defaultdict
from typing import List
# Union Find
def largestComponentSize(nums: List[int]) -> int:
par = {i: i for i in nums}
rank = {i: 0 for i in nums}
def find(n):
p = par[n]
while par[p] != p:
par[p] = par[par[p]]
p = par[p]
return p
def union(n1, n2):
p1, p2 = find(n1), find(n2)
if p1 != p2:
if rank[p1] > rank[p2]:
par[p2] = p1
elif rank[p1] < rank[p2]:
par[p1] = p2
else:
par[p2] = p1
rank[p1] += 1
def prime_factors(n):
"""Return the prime factors of n."""
i = 2
factors = set()
while i * i <= n:
while (n % i) == 0:
factors.add(i)
n //= i
i += 1
if n > 1:
factors.add(n)
return factors
factor_map = defaultdict(list) # factor -> [nums]
for num in nums:
factors = prime_factors(num)
for factor in factors:
factor_map[factor].append(num)
for factor, group in factor_map.items():
for i in range(1, len(group)):
union(group[0], group[i])
sizes = defaultdict(int) # component root -> size
for num in nums:
root = find(num)
sizes[root] += 1
return max(sizes.values())
nums = [20, 50, 9, 63]
print(largestComponentSize(nums)) # 2
1627. Graph Connectivity With Threshold¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, math, union find, number theory
2198. Number of Single Divisor Triplets¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: math
625. Minimum Factorization¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: math, greedy
2847. Smallest Number With Given Digit Product¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: math, greedy