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; } };
相关文章推荐
- House Robber[leetcode]题解 c++
- LeetCode题解:Range Sum Query - Immutable(C++版本)
- LeetCode 404. Sum of Left Leaves 题解(C++)
- LeetCode 237. Delete Node in a Linked List 题解(C++)
- LeetCode 383. Ransom Note 题解(C++)
- LeetCode题解汇总(C++ Java Python,含题目翻译)
- LeetCode 347. Top K Frequent Elements 题解(C++)
- LeetCode 260. Single Number III 题解(C++)
- LeetCode 167. Two Sum II - Input array is sorted 题解(C++)
- LeetCode 384. Shuffle an Array 题解(C++)
- LeetCode题解:Range Sum Query - Immutable(C++版)
- LeetCode 371. Sum of Two Integers 题解(C++)
- LeetCode 406. Queue Reconstruction by Height 题解(C++)
- LeetCode 283. Move Zeroes 题解(C++)
- LeetCode 409. Longest Palindrome 题解(C++)
- leetcode Minimum Depth of Binary Tree C++题解
- LeetCode 344. Reverse String 题解(C++)
- LeetCode 104. Maximum Depth of Binary Tree 题解(C++)
- LeetCode 382. Linked List Random Node 题解(C++)
- LeetCode 100. Same Tree 题解(C++)