emmm,似懂非懂。。
class Solution {
private void swap(int[] arr , int x , int y ){
int tmp = arr[ x ];
arr[ x ] = arr[ y ];
arr[ y ] = tmp;
}
public int minSwapsCouples(int[] row) {
int n = row.length;
int[] pos = new int[ n ];
int[] ptn = new int[ n ];
for( int i = 0 ; i < n ; i ++ ){
ptn[ i ] = ( i % 2 == 0 )?( i + 1 ) : ( i - 1 );
pos[ row[ i ] ] = i;
}
int res = 0;
for( int i = 0 ; i < n ; i ++ ){
for( int j = ptn[ pos[ ptn[ row[ i ]]]] ; i != j ; j = ptn[ pos[ ptn[ row[ i ]]]]){
swap( row , i , j );
swap( pos , row[ i ] , row[ j ]);
res ++;
}
}
return res;
}
}