zoukankan      html  css  js  c++  java
  • leetCode-Missing Number

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

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

    版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    十三周上机练习
    上机练习
    第十一周作业
    第十一周上机作业
    第十周上机作业
    第九周作业
    第八次作业
    第八次作业
    第六次作业
    第五次作业
  • 原文地址:https://www.cnblogs.com/kevincong/p/7887610.html
Copyright © 2011-2022 走看看