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?
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Subscribe to see which companies asked this question.
Solution:
Tips:
make every element go to the place where value equals to index.
Java Code:
public class Solution {
public int missingNumber(int[] nums) {
int i = 0;
while (i < nums.length) {
if (i == nums[i] || nums[i] == nums.length) {
i++;
} else {
int val = nums[i];
nums[i] = nums[val];
nums[val] = val;
}
}
int idx = 0;
for (; idx < nums.length; idx++) {
if (idx != nums[idx]) {
return idx;
}
}
return idx;
}
}