765. 情侣牵手

Posted fdwzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了765. 情侣牵手相关的知识,希望对你有一定的参考价值。

技术图片

 

 贪心算法(应该算吧),每次至少复合一对情侣

 1 class Solution {
 2 public:
 3     int minSwapsCouples(vector<int>& row) {
 4         if(row.empty()){return 0;}
 5         int n=row.size();
 6         vector<int> d(n,0);//d[i]表示i旁边坐的谁
 7         for(int i=0;i<n;++i){
 8             if(i&1){//座位奇数,(i-1,i)一个座
 9                 d[row[i]]=row[i-1];//i旁边的人是i-1
10                 d[row[i-1]]=row[i];//i-1旁边的人是i
11             }
12         }
13         int cnt=0;
14         for(int i=0;i+1<n;i+=2){
15             if(d[i]==i+1){
16                 //i号人的旁边正好是i+1,即是一对情侣
17                 continue;
18             }
19             else{
20                 int x=d[i];
21                 int y=d[i+1];
22                 d[i]=i+1,d[x]=y,d[i+1]=i,d[y]=x;
23                 ++cnt;
24             }
25         }
26         return cnt;
27     }
28 };

 

以上是关于765. 情侣牵手的主要内容,如果未能解决你的问题,请参考以下文章

情侣牵手,分发糖果,跳跃游戏,单源最短路径Dijkstra算法,贪心算法构造霍夫曼编码

数据结构与算法之深入解析“情侣牵手”的求解思路与算法示例

Leetcode——链表和数组

Leetcode——链表和数组

PTA5-2

题解PTA团体程序设计天梯赛L1-040 最佳情侣身高差 (10 分) Go语言|Golang