其他分享
首页 > 其他分享> > Leetcode 810 黑板异或游戏 博弈论

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