力扣每日一题|困难题NO.765 情侣牵手(JAVA)

题目描述
力扣每日一题|困难题NO.765 情侣牵手(JAVA)_第1张图片
解答代码如下:

class Solution {
    public int minSwapsCouples(int[] row) {
        int cot = 0,p1,p2;
        int n = row.length;
        //用一个新数组记录每个人的位置
        int[] index = new int[n];
        for(int i=0;i<n;i++)
        {
            index[row[i]] = i;
        }
        for(int i=0;i<n;i+=2)
        {
            p1 = row[i];
            //next表示p1对象的实际座位下标
            int next = p1%2 == 0?index[p1+1]:index[p1-1];
            p2 = row[next];
            if (p2 != row[i+1]){
            //仅需更新后面一个位置的信息
                row[next] = row[i+1];
                index[row[next]] = next;
                cot++;
            }
            else{
                continue;
            }
        }
        return cot;
    }
}

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