「LeetCode」0952-Largest Component Size by Common Factor(Go)
Posted Thorough Repeater
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「LeetCode」0952-Largest Component Size by Common Factor(Go)相关的知识,希望对你有一定的参考价值。
分析
代码
var isPrime[100005] bool
var pa[100005] int
func initPrimeNumbers() {
isPrime[0]=false
isPrime[1]=false
for i:=2;i<=100000;i++ {
isPrime[i]=true
}
for i:=2;i<=100000;i++ {
if(isPrime[i]) {
for j:=i+i; j<=100000; j+=i {
isPrime[j]=false;
}
}
}
}
func find_pa(x int) int {
if(x==pa[x]) {
return x
} else {
pa[x]=find_pa(pa[x])
return pa[x]
}
}
func union_pa(x,y int) {
var pa_x=find_pa(x)
var pa_y=find_pa(y)
if(pa_x!=pa_y) {
pa[pa_x]=pa_y
}
}
func largestComponentSize(A []int) int {
initPrimeNumbers();
primeMap :=[]int{}
for i:=1; i<=100000; i++ {
if(isPrime[i]) {
primeMap=append(primeMap, i)
}
pa[i]=i
}
for _, i := range A {
var tmp=i
for _,prime := range primeMap {
if(prime>tmp) {
break
}
if(tmp%prime==0) {
for tmp%prime==0 {
tmp/=prime
}
union_pa(i,prime)
}
}
}
cntMap:=make(map[int]int)
var maxVal=0
for _, i :=range A {
var idx=find_pa(i)
if _,ok :=cntMap[idx]; ok {
cntMap[idx]+=1
} else {
cntMap[idx]=1
}
if maxVal<cntMap[idx] {
maxVal=cntMap[idx]
}
}
return maxVal
}
以上是关于「LeetCode」0952-Largest Component Size by Common Factor(Go)的主要内容,如果未能解决你的问题,请参考以下文章
[leetcode] Reverse Linked List
个人记录-LeetCode 77. Combinations