您的位置:首页 > 其它

leetcode Weekly Contest 67 -- 765. Couples Holding Hands

2018-01-14 12:22 495 查看
N couples sit in 2N seats arranged in a row and want to hold hands. We want to know the minimum number of swaps so that every couple is sitting side by side. Aswap consists of choosing
any two people, then they stand up and switch seats.

The people and seats are represented by an integer from
0
to
2N-1
, the couples are numbered in order, the first couple being
(0, 1)
, the second couple being
(2, 3)
, and so on with the last couple being
(2N-2, 2N-1)
.

The couples' initial seating is given by
row[i]
being the value of the person who is initially sitting in the i-th seat.

Example 1:

Input: row = [0, 2, 1, 3]
Output: 1
Explanation: We only need to swap the second (row[1]) and third (row[2]) person.


Example 2:

Input: row = [3, 2, 0, 1]
Output: 0
Explanation: All couples are already seated side by side.


Note:

len(row)
is even and in the range of
[4, 60]
.
row
is guaranteed to be a permutation of
0...len(row)-1
.

class Solution {
public:
int minSwapsCouples(vector<int>& row)
{
int a,sum=0;
for (int i = 0; i < row.size(); i += 2)
{

if (row[i] % 2 == 0)a = row[i] + 1;
else a = row[i] - 1;

for (int j = i + 1; j < row.size(); j++)
{
if (a == row[j]&& j != i + 1)
{
swap(row[i + 1], row[j]);
sum++;
break;
}
}
}

return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode