leetCode-Missing Number

来源:互联网 发布:网络运营培训班 编辑:程序博客网 时间:2024/06/05 18:48

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;    }}

总结:还是得多观察元素的规律。

原创粉丝点击