当前位置: 首页 > 面试题库 >

找出数组中只出现1次的数,其余数均出现2次,扩展,其余数出现2次以上

朱锦
2023-03-14
本文向大家介绍找出数组中只出现1次的数,其余数均出现2次,扩展,其余数出现2次以上相关面试题,主要包含被问及找出数组中只出现1次的数,其余数均出现2次,扩展,其余数出现2次以上时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

位运算题目,

位运算中异或的性质:两个相同数字异或=0,一个数和0异或还是它本身。当只有一个数出现一次时,我们把数组中所有的数,依次异或运算,最后剩下的就是落单的数,因为成对儿出现的都抵消了。

public static int find1From2(int[] a){
int len = a.length, res = 0;
for(int i = 0; i < len; i++){
res = res ^ a[i];
}
return res;
}

扩展:

public static int find1From3(int[] a){
int[] bits = new int[32];
int len = a.length;
for(int i = 0; i < len; i++){
for(int j = 0; j < 32; j++){
bits[j] = bits[j] + ( (a[i]>>>j) & 1);
}
}
int res = 0;
for(int i = 0; i < 32; i++){
if(bits[i] % 3 !=0){
res = res | (1 << i);
}
}
return res;
}

 

 类似资料:
  • NowCoder 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次,找出这两个数。 解题思路 两个不相等的元素在位级表示上必定会有一位存在不同,将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。 diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。 // ja

  • 一、题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 举例说明 例如输入数组{2, 4, 3, 6, 3, 2, 5 },因为只有4 、6 这两个数字只出现一次,其他数字都出现了两次,所以输出4和6 。 二、解题思路 这两个题目都在强调一个(或两个)数字只出现一次,其他的出现两次。这有什么意义呢?我们

  • 问题内容: 假设我有一个包含以下值的表。 所以我想构造以下输出。 它仅获取列中每个元素的计数。 我在列出唯一列时遇到了问题。 谁能告诉我该怎么做? 我已经弄乱了和,但是无法获取左侧的值列表。 问题答案: 你是这个意思吗

  • 假设我有一个数组 查找出现次数最多的项的最有效和“pythonic”方法是什么?它在列表中出现了多少次?

  • 本文向大家介绍Python中首次出现真数,包括了Python中首次出现真数的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们需要在给定的数字列表中找到第一个出现的非零数字。 与枚举和下一个 我们起诉枚举以获取所有元素的列表,然后应用下一个函数以获取第一个非零元素。 示例 输出结果 运行上面的代码给我们以下结果- 与下一个和过滤器 将next和filter条件以及lambda表达式应用于条件不

  • NowCoder 解题思路 // java public int NumberOf1Between1AndN_Solution(int n) { int cnt = 0; for (int m = 1; m <= 1="" 10="" n;="" m="" *="10)" {="" int="" a="n" m,="" b="n" %="" m;="" cnt="" +="(a"