给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。
对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。
初解思路:
递归找到最大值,然后如果当前值加上额外的糖果可以达到最大值,那么就满足
class Solution {
public int max;
public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
ArrayList<Boolean> result = new ArrayList();
if(candies == null || candies.length == 0) {
return result;
}
max(0, candies,result,extraCandies);
return result;
}
private void max(int i, int[] candies, ArrayList<Boolean> result, int extraCandies) {
if(candies[i] > max) {
max = candies[i];
}
if(i + 1 < candies.length) {
max(i + 1, candies, result, extraCandies);
}
if(candies[i] + extraCandies >=max) {
result.add(0,true);
} else {
result.add(0,false);
}
}
}