题目
822. 翻转卡片游戏
题解思路
简述为:找到桌面卡片中 不重复的最小值,卡片可以来回反转
- 如果 卡片前面后面的数字相同 则抛弃不用
- 在剩下的卡片中 找到最小值(前后可以反转 == 卡片不分前后)
代码
C++
class Solution {
public:int flipgame(vector<int>& fronts, vector<int>& backs) {set<int> a;set<int> b;for (int i = 0; i < fronts.size(); ++i){if (fronts[i] == backs[i]){a.insert(fronts[i]);}else{b.insert(fronts[i]);b.insert(backs[i]);}}int res = 2001;for (auto &num : b){if ( !a.count(num)){res = min(res, num);;}}return res != 2001 ? res : 0;}
};
Python
class Solution:def flipgame(self, fronts: List[int], backs: List[int]) -> int:a = set()b = set()for i in range(len(fronts)):if backs[i] == fronts[i]:a.add(fronts[i])else:b.add(fronts[i])b.add(backs[i])res = [x for x in b if x not in a]return min(res) if res else 0
注意
c++ 中的 set 是按照从小到大排序好的python 中的 set 是无序的