码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode765

时间:2021-04-22 15:12:46      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:size   vector   索引   最大   计算   div   oid   wap   tor   

1.记录索引交换

class Solution {
public:
    int minSwapsCouples(vector<int>& row) {
        int len=row.size();
        vector<int> idx(len,-1);
        int ret=0;
        for(int i=0;i<len;++i){
            int tmp=conv(row[i]);
            //cout<<"i:"<<i<<endl;
            if(idx[tmp]!=-1){    
                //cout<<2<<endl;
                int tmp_idx=conv(idx[tmp]);
                if(tmp_idx!=i){
                    //cout<<3<<endl;
                    ++ret;
                    swap(tmp_idx,i,row);
                    idx[row[i]]=i;
                    //for(int i:row)cout<<"row:"<<i<<endl;
                }
            }else{
                //cout<<1<<endl;
                idx[row[i]]=i;
            }
        }
        return ret;
    }
    int conv(int num){
        return num%2==0?num+1:num-1;
    }
    void swap(int a,int b,vector<int>& row){
        row[a]=row[a]^row[b];
        row[b]=row[a]^row[b];
        row[a]=row[a]^row[b];
    }
};

2.计算图中环的个数和成对的边个数。最大值2n,总量为n,每个不用交换的边-1,每个环-1

leetcode765

标签:size   vector   索引   最大   计算   div   oid   wap   tor   

原文地址:https://www.cnblogs.com/Babylon/p/14682371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!