Problem Description:
Given an array containing n distinct numbers taken from
0, 1, 2, ..., n
, find the one that is missing from the array.Example 1:
Input: [3,0,1] Output: 2Example 2:
Input: [9,6,4,2,3,5,7,0,1] Output: 8Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
Analysis:
本题先遍历整个序列,先将正常的元素放置到正确的位置,然后在遍历一遍序列找到第一个不符合条件的元素。代码如下:
Code:
class Solution {
public int missingNumber(int[] nums) {
for(int i = 0; i < nums.length; i++) {
if(nums[i] != i && nums[i] < nums.length) {
//System.out.println(nums[i]);
int temp = nums[i];
nums[i] = nums[nums[i]];
nums[temp] = temp;
i--;
}
}
for(int i = 0; i < nums.length; i++) {
if(nums[i] != i) {
return i;
}
}
return nums.length;
}
}