LeetCode1431拥有最多糖果的孩子

题目描述

  给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。

解析

这种一眼能解的都要小心点,第一想法如果是对每个孩子加然后再比较(O(n^2))那肯定不是优化解法,这种肯定是能O(n)的时间复杂度下求解的。
其实只需要判断孩子的糖果数量和拥有最多孩子的糖果数量减去额外糖果的数量进行比较即可,算是真正的简单题了。

class Solution {
    public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
        List<Boolean> res = new ArrayList<>(candies.length);
        int maxCandy = 0;
        for (int value : candies) {
            if (value > maxCandy) {
                maxCandy = value;
            }
        }
        maxCandy -= extraCandies;
        for (int candy : candies) {
            res.add(candy >= maxCandy);
        }
        return res;
    }
}

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值