每日一题 21.02.14 LeetCode 765. 情侣牵手 java题解

题目

https://leetcode-cn.com/problems/couples-holding-hands/
每日一题 21.02.14 LeetCode 765. 情侣牵手 java题解_第1张图片

代码

class Solution {
    int[] p=new int[70];
    public void union(int a,int b){
        p[find(a)]=p[find(b)];
    }
    public int find(int x){
        if(p[x]!=x){
            p[x]=find(p[x]);
        }
        return p[x];
    }
    public int minSwapsCouples(int[] row) {
        int len=row.length;
        int n=len/2;//多少对情侣
        for(int i=0;i<n;i++){
            p[i]=i;
        }
        for(int i=0;i<len;i=i+2){
            union(row[i]/2,row[i+1]/2);
        }
        int count=0;
        for(int i=0;i<n;i++){
            if(i!=find(i))
                count++;
        }
        return count;//环的个数
        
    }
}

复杂度

时间复杂度:O(n)
空间复杂度:O(n)

你可能感兴趣的:(LeetCode,leetcode,算法,java)