您的位置:首页 > 其它

268. Missing Number

2016-06-28 15:33 155 查看
题目

Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.

For example,Given nums = [0, 1, 3] return 2.

Note:Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

题目大意是:给一个n个数的数组,每个数组的数字是0,1,2…n中不重复的数字。找出缺失的那个数。

解题思路

思路1:

看到这题就想到了以前小学数学题中求1到n的和的问题,这题只要求出1到n的数的和,然后遍历以便数组,求数组中所有数字的和,然后用1到n的和,减去数组中数字的和,就是缺失的数字了。

思路2:

在讨论区谈到的,被深深的折服了。

a=a^b^b;而数组的数字是从0到n中的n个数,只需要将数字异或0-n中的每个数,并且异或数组中的每个数,最后出了数组中没出现的数,其他数字都被异或了两次,只剩下0-n中没出现的的那个数了。

代码

//思路1
int missingNumber(vector<int>& nums)
{
int nSum = 0;
int nSize=nums.size();
for(int i=0;i<nSize ; ++i)
nSum+=nums[i];
return nSize*(nSize+1)/2 -nSum;
}
//思路2
int missingNumber(vector<int>& nums)
{
int i=0 ,nResult=0;
for( ; i<nums.size() ; ++i)
nResult = nResult^i^nums[i];
return nResult^i;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法