LeetCode 765 题解

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;
    }
}

猜你喜欢

转载自blog.csdn.net/u011439455/article/details/80621184