LeetCode 810 Chalkboard XOR Game【思维】

传送门
题意: 给定n个数, 两个人轮流上去删除一个数字, 如果在某个人删除后, 剩下的数字异或等于0,那么这个人就输了, Alice 先手, 如果它能赢return TRUE.

思路: 考思维, 首先全部数字异或等于0需要二进制的每一位上1出现偶数次, 那么如果刚开始就异或等于0,Alice肯定就赢了嘛, 否则如果剩下的数字是偶数Alice也一定能赢, 因为每次删除一个数字后剩下的数量一定是奇数, 如果能异或等于0,那么Alice就去删除那个关键数字, 所以怎么都不可能异或等于0, 只有删除完才行, 那么此时后手会删除最后一个字, 也就是先手必赢. 否则一开始的数字数量是奇数那么Alice必输(前提异或不等于0).

AC Code

class Solution {
public:
    bool xorGame(vector<int>& nums) {
        int ans = 0;
        for (int i = 0 ; i < nums.size() ; ++ i) ans ^= nums[i];
        if (!ans || nums.size() % 2 == 0) return true;
        return false;
    }
};

你可能感兴趣的:(想法思维题,leetcode,部分题解)