有这么一道题,一个int数组叫A,里面的数是不重复的,从中拿出一个值,剩下的数组就B,问拿出的是哪个数。

一般人都能想到把A数组值相加,假设和为sum1,再把B数组值相加,设其和为sum2,sum1-sum2就是拿出的数。当初manager面我是,我就是这么回答的,心里还想怎么这么简单的题目还问(当时他出的int数组是从1到10的)。

其实这道题是有陷阱的啊,因为int数组值相加,可能会溢出!还好manager的数组是从1到10,不可能溢出。

对上面的方法有个改进的方法,就是对A中值相加时,每加一个值就减去B中的一个值,这样可以减少溢出的可能性。

但是改进过的方法还是有可能溢出,下面列出一个方法,不会有溢出:

离散数学里,大家都学过xor,异或,两个相同的值异或,值是0,两个不同的值异或,值是1,0和任何数异或都是那个数,0和0异或是0,0和1异或是1。
所以对于上面的题,我们定义一个int值,就叫xor吧,把A中每个值用循环异或一下赋以xor,再用xor去异或B中的每个值,做完后,xor就是拿出来的数。

int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] arr1 = new int[] { 1, 2, 3, 4, 5, 7, 8, 9, 10 };int xor = 0;for (int i = 0; i < arr.Length; i++)
{xor = xor ^ arr[i];
}for (int i = 0; i < arr1.Length; i++)
{xor = xor ^ arr1[i];
}Console.WriteLine(xor);
 
异或还可以用于两个值交换,省交换空间,这个只是个技巧而已。

转载于:https://www.cnblogs.com/iwteih/archive/2010/03/16/1687230.html

不重复int数组里找不存在的值相关推荐

  1. 在两个已经排好序的数组里找出第K小的数

    前言: 这道题是一道非常常见的面试题,也是一道能够考察一个人的编程能力和算法的一道题.如果要求复杂度为 O(k), 是比较容易做出来的,但是,一般来讲,面试官要求给出更低复杂度的算法.网上有很多不同的 ...

  2. vue 怎么样不重复往数组里插入数据_Vue.js在数组中插入重复数据的实现代码分享...

    1.在默认的情况下,Vue.js默认不支持往数组中加入重复的数据.可以使用track-by="$index"来实现. 2.不使用track-by="$index" ...

  3. vue 怎么样不重复往数组里插入数据_前端数据结构与算法(1) -二分查找vs二叉树...

    今天给大家开始介绍前端方面的数据结构,刚把vue源码过完就开始数据结构,可见它的地位有多重要.有人说我一前端又不是后端学这个数据结构干嘛,好吧,只能说你还没有这个意识,一是面试很多大厂就会考察,我面试 ...

  4. java如何找重复数字_Java如何找出数组中重复的数字

    题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...

  5. Leecode:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数

    题目 /** * 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. * 示例 ...

  6. 【宫水三叶的刷题日记】961. 在长度 2N 的数组中找出重复 N 次的元素

    题目描述 这是 LeetCode 上的 961. 在长度 2N 的数组中找出重复 N 次的元素 ,难度为 简单. Tag : 「模拟」.「计数」.「构造」.「哈希表」 给你一个整数数组 nums ,该 ...

  7. 数组专题——找重复数字 利用下标

    找出任一重复数字 数组范围0-n-1 bool duplicate(int numbers[],int length,int *duplication){//传地址,通过参数返回重复数字//robus ...

  8. int数组,找小于右边所有数,大于左边所有数的数

    一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它.能否只用一个额外数组和少量其它空间实现. 老早就想把这道题目写了,一直没写:N天不碰算法 ...

  9. 判断一个int数组中的元素是否存在重复

    package com.hbut.test2; import java.util.ArrayList; import java.util.HashSet; import java.util.List; ...

最新文章

  1. 深入浅出OOP(四): 多态和继承(抽象类)
  2. JavaScript text highlighting JQuery plugin
  3. Centos6.5部署大众点评CAT
  4. 环境在c盘_如何给女朋友解释为什么 Windows 上面的软件都把自己安装在 C 盘
  5. 表达式目录树(Expression)
  6. 最大数输出(信息学奥赛一本通-T1053)
  7. Windows音频编程:Win32 Wave API 的使用
  8. 构造函数与析构函数的重载及浅拷贝和深拷贝
  9. spring boot默认扫描的路径
  10. 俄罗斯方块英文JAVA版下载_俄罗斯方块java源代码完美版
  11. 微信小程序UI组件库合集
  12. R、冗余分析(RDA)、ggplot2、置信椭圆
  13. 使用命令行生成文件目录树
  14. java基础提升(二):多线程、线程安全、线程状态、等待唤醒机制、线程池
  15. 设计模式(二):设计原则
  16. HIOKI日置RM3545电阻计/电阻表
  17. 大数据工程师和数据分析师有何区别
  18. 养眼的大自然色卡,设计师必备
  19. 写一个程序输入一个国家的国家名,输出该国的首都名。
  20. spring security

热门文章

  1. c语言指针用法有哪些
  2. C语言 | 二维数组
  3. 如何卸载pip 重新安装mysql_pip install cymysql失败的解决办法 | 厘米天空
  4. css初始化_利用CSS变量实现炫酷的悬浮效果
  5. 简单比对照片是否相同_小新说法 | 如何认定商标是否侵权?
  6. css less 不要作用到子对象_CSS-预处理语言Sass、Less简述
  7. sudo spctl --master-disable_量大从优批发--阳离子聚丙烯酰胺--用于生活污水、
  8. python3异步协程爬虫_Python实现基于协程的异步爬虫
  9. c++ 为什么要按它们声明的顺序初始化成员变量?
  10. LoRa是怎样实现定位的