开发者社区 问答 正文

如何理解利用按位异或来得到数组中不重复的项?

screenshot
获取数组中只出现过一次的数字的算法,用到了XOR,但不太能理解
screenshot
只记得自身的XOR会得到0

展开
收起
蛮大人123 2016-02-27 16:21:22 2394 分享 版权
2 条回答
写回答
取消 提交回答
  • 0 xor 0 = 0
    0 xor 1 = 1
    得出 a xor 0 = a
    1 xor 1 = 0
    0 xor 0 = 0
    得出 a xor a = 0
    所以数组中所有数异或一遍,出现两次的结果为0,就能找出只出现一次的数,这道题我记得leetcode上出现过,还有更复杂一些的

    2019-07-17 18:49:02
    赞同 展开评论
  • 我说我不帅他们就打我,还说我虚伪

    1.a^a=0
    2.0^a=a
    3.异或满足交换率和结合率
    因此a^b^c^b^c=a^(b^b)^(c^c)=a

    2019-07-17 18:49:02
    赞同 展开评论
问答分类:
问答地址: