企业网站模板建站怎么用/厦门seo外包公司
0x01.谁能拥有最多的糖果呢?
来自儿童节Leetcode官方的满满宠意。
看看谁能拥有最多的糖果呢?
给你一个数组 candies
和一个整数 extraCandies
,其中 candies[i]
代表第 i
个孩子拥有的糖果数目。
对每一个孩子,检查是否存在一种方案,将额外的 extraCandies
个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。
示例 1:
输入: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个额外糖果,那么他将成为拥有最多糖果的孩子。
示例 2:
输入:candies = [4,2,1,1,2], extraCandies = 1
输出:[true,false,false,false,false] 解释:只有 1 个额外糖果,所以不管额外糖果给谁,只有孩子 1
可以成为拥有糖果最多的孩子。
示例 3:
输入:candies = [12,1,12], extraCandies = 10
输出:[true,false,true]
提示:
- 2 <=
candies.length
<= 100 - 1 <=
candies[i]
<= 100 - 1 <=
extraCandies
<= 50
这个问题虽然是小朋友问题,但是,儿童节还是需要仪式感,滴滴滴~~~(具体大家都是小朋友)。
0x02.找找谁能拥有最多的糖果~~
最简单的思考,给每个孩子分配额外的糖果,在给每个孩子分配完后,遍历一遍数组,找有没有比他糖果还多的,如果没有,那么他就可以成为拥有最多糖果的小朋友啦~
但是这样子对小朋友不是很友好,因为有点慢,小朋友可是很心急的。如果有100个小朋友,就需要比较10000次。(O(N^2))
有没有更好的办法呢?
当然是有的,换种方式思考一下,一个小朋友得到额外糖果后能否成为拥有糖果最多的人,其实只要判断一下他得到额外糖果后,能否比原来没有分配糖果时,那个拥有最多糖果的人要多就可以啦~
这样,100个孩子,就只需要比较两百次就可以啦~(O(N))
- 小思维:【发奖金后能否成为工资最多的人取决于是否能够高于裸工资最高的人】
0x03.小小代码
class Solution {public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {List<Boolean> ans=new ArrayList<Boolean>();int maxc=0;for(int candy:candies){maxc=Math.max(maxc,candy);}for(int candy:candies){ans.add(candy+extraCandies>=maxc);}return ans;}
}
儿童节快乐!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!