您的位置:首页 > 编程语言 > C语言/C++

LeetCode 268. Missing Number 题解(C++)

2016-10-20 12:13 381 查看

LeetCode 268. Missing Number 题解(C++)

题目描述

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

举例

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

补充

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

思路

使用异或位运算完成。若两个数相同,则异或的结果为0。这里利用若某个位置在数组中没出现与该位置相等的元素,则整个数组异或完成后的结果即为该位置。这里先将nums的长度(也就是题目中的n)赋给bitXOR,之后开始对数组进行遍历,同时用bitXOR对当前数组的指针位置和该位置的值进行异或运算,得到的结果就是所求的值。

这里还可以把0到n加起来得到的值,减去数组所有元素的值得到结果。

代码

class Solution
{
public:
int missingNumber(vector<int>& nums)
{
int bitXOR = nums.size();
for (int i = 0; i < nums.size(); ++i)
{
bitXOR ^= i;
bitXOR ^= nums[i];
}
return bitXOR;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode c++