描述:
给定数组candies
和整数extraCandies
,其中candies[i]
代表第i个孩子拥有的糖果数量。
对于每个孩子检查,如果有一种方法来分发extraCandies
孩子这样之中,他或她可以有最大的其中糖果的数量。请注意,多个孩子可以拥有最多数量的糖果。
题目示例:
范例1:
输入: candy = [2,3,5,1,3],extraCandies = 3
输出: [true,true,true,false,true]
说明:
孩子1有2个糖果,如果他或她收到所有额外的糖果(3),则将有5个糖果-在孩子中糖果数量最多。
孩子2有3个糖果,如果他或她至少收到2个额外的糖果,则孩子中的糖果数量最多。
孩子3有5个糖果,这已经是孩子中最多的糖果了。
孩子4有1个糖果,即使他或她收到所有额外的糖果,也只会有4个糖果。
孩子5有3个糖果,如果他或她至少收到2个额外的糖果,则孩子中的糖果数量最多。
范例2:
输入: candy = [4,2,1,1,2],extraCandies = 1
输出: [true,false,false,false,false]
说明:只有1个额外的糖果,因此只有孩子1的数字最大的糖果,无论谁拿走了多余的糖果。
范例3:
输入: candy = [12,1,12],extraCandies = 10
输出: [true,false,true]
读题可知:
一:根据描述需找出数据 candy 里面的最大那个数(max)
二:数组里面的每一个数 + extraCandies 大于等于 数组里面最大的数(max) 为一个true 反之为false
思考:
一:计划用一个for循环来遍历找出数组中的最大的那个数(max)
二:计划用另一个for循环来遍历数组的每一个数 + extraCandies 是否大于等于max,
是大于等于则为true 添加到集合,反之小于则为false添加到集合。
代码:
public static List kidsWithCandies() {
List kidsWithCandies = new ArrayList<>();
int extraCandies = 4;
int[] candies = { 1, 3, 9 };
int max = Integer.MIN_VALUE;
for (int i = 0; i < candies.length; i++) {
if (candies[i] > max) {
max = candies[i];
}
}
for (int i = 0; i < candies.length; i++) {
kidsWithCandies.add(candies[i] + extraCandies >= max);
}
return kidsWithCandies;
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
List<Boolean> list = kidsWithCandies();
for (Boolean l : list) {
System.out.println(l);
}
System.out.println(System.currentTimeMillis() - start);
}
}