「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 454. 4Sum II

[leetcode] Reverse Linked List

个人记录-LeetCode 77. Combinations

个人记录-LeetCode 77. Combinations

Leetcode:2. 两数相加

Leetcode周赛比赛目录索引