题目描述
给你一个数组 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;
}
}