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: 2 Example 2: Input: [9,6,4,2,3,5,7,0,1]Output: 8 Note: Your algorithm should run in line
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: 2
Example 2:
Input: [9,6,4,2,3,5,7,0,1] Output: 8
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
class Solution { public int missingNumber(int[] nums) { Arrays.sort(nums); for(int i = 0; i < nums.length; i++){ if(i != nums[i]) return i; } return nums.length; } }
注意考虑都在的情况(返回数组长)
class Solution { public int missingNumber(int[] nums) { int k1 = 0, k2 = 0; for(int i = 0; i < nums.length; i++){ k1 += nums[i]; k2 += (i+1); } return k2 - k1; } }
或者计算原本应该有的值大小,再减去数组之和就是miss掉的。