Description:
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?
My Solution:
class Solution { public int missingNumber(int[] nums) { int len = nums.length; int[] arr = new int[len + 1]; for(int i = 0;i < len;i++){ arr[nums[i]]++; } int result = 0; for(int i = 0;i < len + 1;i++){ if(arr[i] == 0){ result = i; } } return result; } }
Better Solution:
class Solution { public int missingNumber(int[] nums) { //利用等差数列求0,1,2...n的和 int expSum=(nums.length+1)*nums.length/2; //实际nums元素之和 int actualSum=0; for(int num:nums){ actualSum=actualSum+num; } 相减即为缺少的数 return expSum-actualSum; } }
总结:还是得多观察元素的规律。
版权声明:本文为博主原创文章,未经博主允许不得转载。