剑指offer56*数组中只出现一次的两个数字
题目
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
答案
1 | class Solution { |
思路
经典的位运算题目。首先把所有数字异或起来,两个相同的数字异或等于0,所以最终的结果是两个只有一个的数字异或得到的结果。然后,不断的移位找到第一个为1的位置(在这个位置上,两个只有1个的数是不相同的),然后重新遍历数组根据这一位来遍历,分成两个数组,然后每个数组之间异或,得到的就是两个数字。
Author: corn1ng
Link: https://corn1ng.github.io/2018/02/13/算法/JZoffer56/
License: 知识共享署名-非商业性使用 4.0 国际许可协议