题目
822. 翻转卡片游戏文章来源:https://www.toymoban.com/news/detail-625183.html
题解思路
简述为:找到桌面卡片中 不重复的最小值,卡片可以来回反转文章来源地址https://www.toymoban.com/news/detail-625183.html
- 如果 卡片前面后面的数字相同 则抛弃不用
- 在剩下的卡片中 找到最小值(前后可以反转 == 卡片不分前后)
代码
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 是无序的
到了这里,关于每日一题(822. 翻转卡片游戏)-集合set的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!