|
| 1 | +# No.1431 拥有最多糖果的孩子 |
| 2 | + |
| 3 | +难度:`easy` |
| 4 | + |
| 5 | +给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 |
| 6 | + |
| 7 | +对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。 |
| 8 | + |
| 9 | +## 示例 |
| 10 | + |
| 11 | +``` |
| 12 | +输入:candies = [2,3,5,1,3], extraCandies = 3 |
| 13 | +输出:[true,true,true,false,true] |
| 14 | +解释: |
| 15 | +孩子 1 有 2 个糖果,如果他得到所有额外的糖果(3个),那么他总共有 5 个糖果,他将成为拥有最多糖果的孩子。 |
| 16 | +孩子 2 有 3 个糖果,如果他得到至少 2 个额外糖果,那么他将成为拥有最多糖果的孩子。 |
| 17 | +孩子 3 有 5 个糖果,他已经是拥有最多糖果的孩子。 |
| 18 | +孩子 4 有 1 个糖果,即使他得到所有额外的糖果,他也只有 4 个糖果,无法成为拥有糖果最多的孩子。 |
| 19 | +孩子 5 有 3 个糖果,如果他得到至少 2 个额外糖果,那么他将成为拥有最多糖果的孩子。 |
| 20 | +``` |
| 21 | + |
| 22 | +## 解题思路 |
| 23 | + |
| 24 | +这个题非常简单,首先找到目前所拥有最大糖果数,然后遍历一遍数组,将额外的糖果数目加上去,然后与最大值比较即可。 |
| 25 | + |
| 26 | +这样的时间复杂度可以达到 O(n) |
| 27 | + |
| 28 | +JavaScript 可以使用 ES6 语法,是的代码非常简洁代码如下: |
| 29 | + |
| 30 | +```javascript |
| 31 | +var kidsWithCandies = function(candies, extraCandies) { |
| 32 | + // 1、找到最大值 |
| 33 | + let maxCandy = Math.max(...candies); |
| 34 | + let ans = []; |
| 35 | + // 2、循环,数组每个值加上 extraCandies 并比较 |
| 36 | + for (let num of candies) { |
| 37 | + ans.push((num + extraCandies) >= maxCandy); |
| 38 | + } |
| 39 | + return ans; |
| 40 | +}; |
| 41 | +``` |
0 commit comments