Leetcode 810 黑板异或游戏 博弈论
作者:互联网
博弈论
1.先筛除数据,一个数如果总共出现奇数次,那么就记录该数,存入容器
2.预处理:如果符号题意的数异或值等于 0,那么先手肯定赢。
3.如果预处理异或值非 0,那么看容器数据的奇偶性,奇数先手输,偶数先手赢。
class Solution {
public:
bool xorGame(vector<int>& nums) {
set<int> s;
int cnt = 0;
for(auto x : nums)
{
if(s.find(x) != s.end()) s.erase(x);
else s.insert(x);
}
int ans = 0;
for(auto x : s)
ans ^= x;
if(ans == 0 || s.size()%2 == 0) return true;
return false;
}
};
标签:return,nums,int,auto,异或,ans,810,Leetcode 来源: https://blog.csdn.net/Edviv/article/details/117172524