给定一个包含从0,1,2,...,n中取出的n个不同数字的数组,找到数组中缺少的数字。
来源:互联网 发布:企业专利数据库 编辑:程序博客网 时间:2024/06/05 15:28
本题源自leetcode 268
-------------------------------------------------------------
思路:用 异或 操作符、俩个相同的数异或等于0 ,与 0 异或等于自身。
代码:
int missingNumber(vector<int>& nums) { int n = nums.size(); int res = n; for(int i = 0;i < n;i++){ res ^= i; res ^= nums[i]; } return res; }
思路2: 排序 二分查找。排序后,对应的数在数组对应的位置上
代码:
int missingNumber(vector<int>& nums) { int n = nums.size(); sort(nums.begin(),nums.end()); int left = 0; int right = n; while(left < right){ int mid = (left + right) >> 1; if(mid < nums[mid]) right = mid; else left = mid + 1; } return left; }
思路3: 求和法。
代码
int missingNumber(vector<int>& nums) { int sum = 0; int n = nums.size(); for(int num : nums){ sum += num; } return (n * (n + 1))/2 - sum; }
阅读全文
0 0
- 给定一个包含从0,1,2,...,n中取出的n个不同数字的数组,找到数组中缺少的数字。
- 快速找到1到N中缺少的一个数字
- 从数组中取出n个元素的组合
- 给定数组,试求能否从数组中取出n个不复用的数的和为sum
- 数组中重复的数字(n个数字,且数字都在0到n-1范围内)
- 求N+1 个数字中缺少的那个数值
- 给定一个单调递增有序数组A,给定一个数字N,试给出一个算法得到A中该数字N出现的次数。
- iOS N个数组,从每个数组中取出一个元素,组合,成为一个新的数组的集合
- 有一个数组data[n-1]存储了1~n中的n-1个数,问data中缺少的数字是多少【每日一题】
- 数组中超过N分之一的数字
- N个数组,从每个数组中取出一个数,组成一个序列,输出所有可能的情况
- zoj3596 求一个数N的最小的一个倍数中包含M个不同的数字
- 找出一个int[]数组中满足 2^n的数字,然后组成的新的数组
- PHP取两个数组中的差集(取出一串连续数字中缺少的数字)
- 从面试题中学算法(2)---求数组中唯一n个出现1次的数字(n=1,2,3)
- 给定一个整数,把整数中包含的每一个数字放到一个数组中(不要把数字转化为字符串处理)
- 346/5000 给定一个n个整数的数组S,在S中找到三个整数,使得总和最接近给定数量的目标。 返回三个整数的和。
- java取出一个数组中第二大的数字
- Spring之代理设计模式原理与代码展示
- [寒假计划]
- laravel schedule小记
- 武汉工程科技学院.网络集成与安全.综合实习报告.2017.12.5
- C++命名规则
- 给定一个包含从0,1,2,...,n中取出的n个不同数字的数组,找到数组中缺少的数字。
- SQL求解两个时间差
- Spark性能调优:checkPoint的使用
- mongo-java-driver -3.2.2学习笔记-05-身份认证
- 使用CocoaPods 出错
- 关于Linux下.so的介绍和编写过程
- 如何实时查看mysql当前连接数
- 安卓 10 周岁了:这些消失的经典 APP 你还记得吗?
- IAR下用sourceinsight看看整个工程的代码