7.05
- 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
请返回 nums 的动态和。
输入:nums = [1,2,3,4]
输出:[1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。
public static int[] sum(int[] nums){
int sum = 0;
for(int i=0;i<nums.length;i++){
//将索引小于等于i的全部元素相加,赋值索引为i的元素
sum += nums[i];
nums[i] = sum;
}
return nums;
}
7.06
给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。
对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。
输入:candies = [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 个额外糖果,那么他将成为拥有最多糖果的孩子。
public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
int n = candies.length;
int maxCandies = candies[0];
for (int i = 1; i < n; ++i) {
maxCandies = Math.max(maxCandies, candies[i]);
}
List<Boolean> ret = new ArrayList<Boolean>();
for (int i = 0; i < n; ++i) {
ret.add(candies[i] + extraCandies >= maxCandies);
}
return ret;
}
public static List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
List<Boolean> list=new ArrayList<Boolean>();
int max=candies[0];
for(int i=1;i<candies.length;i++){
if(max<candies[i]){
max=candies[i];
}
}
int temp=max-extraCandies;
for (int i = 0; i < candies.length; i++) {
if(candies[i]>=temp){
list.add(true);
}else{
list.add(false);
}
}
return list;
}
总结 : 1 找出数组的最大的元素 用math.max()方法
2 list.add(可以写表达式直接得出true 或者是false)