力扣765题:情侣牵手问题的贪心解法
20小时前
一、题目解读
力扣765题要求在一个座位数组中,每对情侣需相邻而坐。给定n对情侣的初始座位安排(偶数长度数组),需通过最小次数的交换操作,使所有情侣成为相邻座位。
二、贪心算法完整代码
class Solution { public: int minSwapsCouples(vector<int>& row) { int n = row.size(); vector<int> pos(n); // 记录每个人的位置 for (int i = 0; i < n; ++i) { pos[row[i]] = i; } int res = 0; for (int i = 0; i < n; i += 2) { int x = row[i]; int y = x ^ 1; // 计算x的情侣ID if (row[i + 1] == y) continue; // 已经配对 // 交换位置 int j = pos[y]; swap(row[i + 1], row[j]); pos[row[j]] = j; // 更新位置信息 pos[row[i + 1]] = i + 1; res++; } return res; } };
原创内容 转载请注明出处