leetcode 缺失数字 (java实现)

  相比较下面最快的方法,我的方法还算是中规中矩了:开辟一个和给定数组一样长的布尔型数组,遍历若数字不缺失,则布尔型数组相应位置为true,最后再遍历布尔型数组,找到缺失的数。感觉还是慢了,毕竟用了两个for循环。

class Solution {
    public int missingNumber(int[] nums) {
        boolean[] cor = new boolean[nums.length];
        for (int i = 0; i < nums.length; i ++) {
            if (nums[i] < nums.length) {
                cor[nums[i]] = true;
            }
        }
        int i;
        for (i = 0; i < cor.length; i ++) {
            if (cor[i] == false) break;
        }
        return i;
    }
}

  最快的方法是通过数学的方式求出的,挺巧妙的:

class Solution {
    public int missingNumber(int[] nums) {
        int sum = 0;
        for(int i = 0; i < nums.length; i ++){
            sum += nums[i];
        }
        return nums.length * (nums.length + 1) / 2 - sum;
    }
}
发布了27 篇原创文章 · 获赞 10 · 访问量 5028

猜你喜欢

转载自blog.csdn.net/l1l1l1l/article/details/89048590
今日推荐