剑指offer:数组中只出现一次的数字
2021-02-09 19:18
标签:Once 除了 第一个 get 假设 bool sbit 数组 就是 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 使用Set集合,遍历数组,当数字第一次出现时,加入Set,当数字第二次出现时,从Set中删除。最后Set中剩余的元素就是结果,赋值给num1、num2 利用异或运算:两个相同数字异或=0,一个数和0异或还是它本身 。 假设数组中两个不同的值是A、B,将数组中的元素逐个异或,最终结果就是AB异或的结果。 两值的区别是,在二进制表示的情况下,至少有一位不同。我们可以取第一个1所在的位数,将数组分成两部分。 相同的数值一定在同一组,不同的值一定在不同组。将两组值逐个进行异或处理,最终得到两个只出现一次的数值。 剑指offer:数组中只出现一次的数字 标签:Once 除了 第一个 get 假设 bool sbit 数组 就是 原文地址:https://www.cnblogs.com/le-le/p/12748694.html题意描述
解题思路
一、思路一
二、思路二
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array == null) return ;
num1[0] = 0;
num2[0] = 0;
int bit = 0;
for(int i=0;i
上一篇:Python 集合
下一篇:vue 关于数组和对象的更新
文章标题:剑指offer:数组中只出现一次的数字
文章链接:http://soscw.com/index.php/essay/53224.html