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 =
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?
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
Approach : Use xor of all the nums from 0 to n and elements of nums array.
Because of the property that i ^ i = 0, only missing element survives in the end.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Solution { public: int missingNumber(vector<int>& nums) { int n = nums.size(); int result = 0; for(int i = 0; i <= n; i++){ result = result ^ i; } for(int i = 0; i < n; i++){ result = result ^ nums[i]; } return result; } }; |
0 comments:
Post a Comment