leetcode 缺失数字 (java实现)

本文介绍了两种寻找数组中缺失数字的方法。一种是使用布尔数组标记已存在的数字,然后找出未被标记的位置;另一种则是利用数学公式直接计算出缺失的数字。后者因其实现简单且效率高而更胜一筹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  相比较下面最快的方法,我的方法还算是中规中矩了:开辟一个和给定数组一样长的布尔型数组,遍历若数字不缺失,则布尔型数组相应位置为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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值