Scalar evolution技術與i^n求和優化
阿新 • • 發佈:2020-12-21
技術標籤:演算法題目
實現優化(路徑壓縮)
public class QuickUnionUF{
private int[] roots;
//建構函式(各自為營)
public QuickUnionUF(int N){
roots=new int[N];
for(int i=0;i<N;i++){
roots[i]=i; //初始化roots陣列
}
}
//尋根節點函式
private int findRoot(int i){
int root=i;
while(root!=roots[root])
root=roots[root]; //不是根節點時一層一層向根迴圈,找到根節點跳出迴圈
while(i!=roots[i]){
int temp=roots[i];
roots[i]=i;
i=temp; //從i開始到i的根節點root迴圈一次,記錄經過的所有節點,並連線到root上,實現優化
}
return root;
}
//判斷p和q是否在同一個集裡(root相同)
public boolean connected(int p,int q){
return findRoot(p)==findRoot(q);
}
//把p和q的連線到同一個集合裡
public void union(int p,int q){
int qroot=findRoot(q);
int proot=findRoot(p);
roots[proot]=qroot;
}
}