37、黑板異或遊戲

題目描述:

一個黑板上寫着一個非負整數數組 nums[i] 。小紅和小明輪流從黑板上擦掉一個數字,小紅先手。如果擦除一個數字後,剩餘的所有數字按位異或運算得出的結果等於 0 的話,當前玩家遊戲失敗。 (另外,如果只剩一個數字,按位異或運算得到它本身;如果無數字剩餘,按位異或運算結果爲 0。)

換種說法就是,輪到某個玩家時,如果當前黑板上所有數字按位異或運算結果等於 0,這個玩家獲勝。

假設兩個玩家每步都使用最優解,當且僅當小紅獲勝時返回 true。

示例:

輸入: nums = [1, 1, 2]
輸出: false
解釋:
小紅有兩個選擇: 擦掉數字 1 或 2。
如果擦掉 1, 數組變成 [1, 2]。剩餘數字按位異或得到 1 XOR 2 = 3。那麼小明可以擦掉任意數字,因爲小紅會成爲擦掉最後一個數字的人,她總是會輸。
如果小紅擦掉 2,那麼數組變成[1, 1]。剩餘數字按位異或得到 1 XOR 1 = 0。小紅仍然會輸掉遊戲。

提示:

1 <= N <= 1000
0 <= nums[i] <= 2^16

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/chalkboard-xor-game
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

看看別人解釋,又是一道數學題…

添加鏈接描述

代碼:

class Solution {
    public boolean xorGame(int[] nums) {
         int sum=0; for (int num : nums) { sum^=num; } if(sum==0)return true; return nums.length%2==0?true:false;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章