消失的数字OJ链接:https://leetcode-cn.com/problems/missing-number-lcci/
题目:
思路:
从题目中我们可以分析出来数组中的元素是成一个等差数列的形式,但是不一定是按顺序排列的。
那么我们可以先排序后查找。但是如果先排序的话很容易让我们的代码变得冗余,甚至超过O(N)
的时间复杂度,那么既然知道了他是一个等差数列我们就可以通过数学的思维方式进行求和,然后
再逐一减去数组中的每一个数,最后剩余的就是我们需要查找的数了。
代码实现:
int missingNumber(int* nums, int numsSize)
{
int num = (numsSize*(numsSize+1))/2;//求和
int sum = 0;
for(int i = 0; i < numsSize; i++)
{
num -= nums[i];
}
return num;
}