https://leetcode.com/problems/couples-holding-hands/description/
题目大意:n个数字 0到n-1,[0,1]、[2,3]...两两一组,问现在这个序列最少多少次交换 能使得一组的两个数相邻。
解题思路:贪心的交换
class Solution {
public int minSwapsCouples(int[] row) {
int n = row.length;
int cnt =0;
for(int i=0;i<n;i+=2)
{
int tmp = row[i];
int next=0;
if(tmp%2==0) next = tmp+1;
if(tmp%2==1) next = tmp-1;
if(tmp%2==0 && row[i+1]==next) continue;
if(tmp%2==1 && row[i+1]==next) continue;
int j;
// System.out.println(next);
for(j=i+1;row[j]!=next;j++) ;
int t = row[j];
row[j] = row[i+1];
row[i+1] = t;
cnt++;
}
return cnt;
}
}