100万个数字,其中只有两个不同,如何找出这两个数字?

回答·42
最热
最新
  • 我总是无所谓的状态 像个刺猬一样竖起尖刺不让人靠近 可我心里难过得要命 我笨笨的 但你别拿我的性格和痛处说我 我看起来很独立 什么都无所谓 你知道的 其实我很脆弱 能不能不要离开我
  • 为什么要找出这两个字的不同一个一个字的找,绝对可以找得出来
  • 为什么要找出这两个数来?
  • 告诉大家一个方法,在 Boss社区上面评论回复超过15个字以上会有活跃度和曝光度,就像我这样
  • 可以使用异或运算来解决这个问题。将所有的数字进行异或,最终得到的结果就是两个不同数字的异或结果。因为两个不同的数字至少有一位是不同的,所以异或结果中至少有一位是1,可以根据这一位将所有数字分为两组,一组该位为1,另一组该位为0。这两个不同的数字必定分别在这两组中,然后再对每组中的数字进行异或操作,就能得到这两个不同的数字了。 具体步骤如下: 将所有数字进行异或,得到结果为result。 找到result中第一个为1的位,记为第n位。 将所有数字按照第n位为0或1分为两组,分别异或得到两个结果,记为result1和result2。 result1和result2即为两个不同的数字。 Java代码实现如下: plaintext Copy code public static void findTwoDifferentNumbers(int[] nums) {     int result = 0;     for (int num : nums) {         result ^= num;     }     int n = 0;     while ((result & 1) == 0) {         result >>= 1;         n++;     }     int result1 = 0, result2 = 0;     for (int num : nums) {         if (((num >> n) & 1) == 0) {             result1 ^= num;         } else {             result2 ^= num;         }     }     System.out.println("两个不同的数字为:" + result1 + "和" + result2); }
  • 告诉大家一个方法、在 Boss社区上面评论回复超过15个字以上会有活跌度和曝光度、就像我这样
  • 告诉大家一个方法,在 Boss社区上面评论回复超过15个字以上会有活跌度和曝光度,就像我这样
  • 获取前五位数字,记录出最多个数的是那个数字 然后创建两个integer变量,循环100万次,把那两变量从null改变成找出来的数字就行了
  • 设只有 n 个数相同,随机取 2n+1 个数,出现次数最多的为 a 相同数,遍历一次对比和 a 不同就能得到结果
  • 没写过算法,平常开发遇见这个问题我的思路是这样的。 利用set非重复特性,循环一遍这一百万数据就搞定了 循环外定义一个set,和重复值变量,在循环中set.add赋值,如果set数量没增加,那这个值就是重复值了,给重复值变量赋值。循环后把set中重复值数据移除。那set里就是不重复的数据了。