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.

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?

题意:给定一个数组num,包含元素范围为[0, num.length];要求找出num中在范围[0, num.length]没有出现的那个元素;

解法:既然我们已经知道了包含的所有元素为范围[0, num.length],而数组num中仅仅只有一个元素没有出现,那么我们只要对范围[0, num.length]求和后减去数组num中的所有元素后得到的就是没有出现的那个元素;

class Solution {
    public int missingNumber(int[] nums) {
        int sum = 0;
        int max = nums.length;
        while(max >= 0) {
            sum += max--;
        }
        for(int num : nums) {
            sum -= num;
        }
        return sum;
    }
}

你可能感兴趣的:(LeetCode)