class Solution {
public:
vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies) {
int maxCandies=*max_element(candies.cbegin(),candies.cend());
int n=candies.size();
vector<bool> res;
for(int i=0;i<n;++i){
res.push_back(candies[i]+extraCandies>=maxCandies);
}
return res;
}
};
最优解法就是把糖全给一个小朋友看看他是不是能够达到或者超过最大
- 首先遍历整个vector找到目前最大的值,这是因为如果全分给他了之后,他要么会比这个最大值大,要么等于最大值,这两种情况都属于他是目前拥有最大值糖数的人。
- 使用n记录下来vector的size可以避免在元素过多时重复计算元素数量,消耗时间
- 直接push_back进去的是布尔值,由比较得到的bool值,核心思想就是把糖都给他,看他是否大于等于之前的最大值,满足的情况下,他就是可以拥有最多糖果的孩子。