题目描述
解答代码如下:
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;
}
}