LC 2527. 查询数组 Xor 美丽值

https://leetcode.cn/problems/find-xor-beauty-of-array/

这题我考虑的是某种抽象思路,就是想化简这个表达式。

整个表达式可以写成 `XOR(x[i] & (x[j] | x[k]))`.

X[i]只是对 `x[j] | x[k]` 做个mask, 所以其实可以把xor算子放在里面,把X[i]移出来。可以表示成为 `(a & b) ^ (a & c) = a & (b ^ c)`.

这样的话上面式子可以改写为 `XOR(x[i] & XOR(x[j] | x[k]))`. 然后其实 `XOR(x[j] | x[k]` 部分都是成对出现的: `(x[j] | x[k]) ^ (x[k] | x[j])`, 所以这个部分就是0. 所以最后整个表达式其实就是 `XOR(x[i])`.


我觉得上面这个过程有点抽象,而且好像有点撞运气的成分。这个分析感觉比较general一些:https://leetcode.cn/problems/find-xor-beauty-of-array/solution/chai-wei-hua-jian-cheng-yi-ge-piao-liang-pun6/


class Solution:
    def xorBeauty(self, nums: List[int]) -> int:
        ans = 0
        for x in nums:
            ans = ans ^ x
        return ans