从0,1,2,…,n这n+1个数中选择n个数,组成有序数组,请找出缺失的那个数,要求O(n)尽可能小。
示例1
输入
[0,1,2,3,4,5,7]
返回值
6
class Solution {
public:
/**
* 找缺失数字
* @param a int整型一维数组 给定的数字串
* @param aLen int a数组长度
* @return int整型
*/
int solve(int* a, int aLen) {
// write code here
for(int i=0;i<aLen;i++){
if(a[i]!=i)
return i;
}
return aLen;
}
};
求和:因为是少一个数,所以先计算0-n的和,减去生成数组中n个数的和,即为缺少的数的大小
class Solution {
public:
/**
* 找缺失数字
* @param a int整型一维数组 给定的数字串
* @param aLen int a数组长度
* @return int整型
*/
int solve(int* a, int aLen) {
// write code here
int sum1=aLen*(aLen+1)/2;
int sum2=0;
for(int i=0;i<aLen;i++){
sum2=a[i]+sum2;
}
return sum1-sum2;
}
};