Missing Number
Total Accepted: 10033 Total Submissions: 31720Given 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.
把nums[i]放到i的位置上. nums[i] != i的即为missing number.
[CODE]
public class Solution {
// 0 1 2 3 4 6
public int missingNumber(int[] nums) {
int i=0;
while(i<nums.length) {
int x = nums[i];
if(x>=nums.length) {++i; continue;}
if(x!=i) swap(nums, i, x);
else i++;
}
for(int j=0; j<nums.length; j++) {
if(j != nums[j]) return j;
}
return nums.length;
}
private void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}