Featured image of post Kids with the Greatest Number of Candies

Kids with the Greatest Number of Candies

1431. 拥有最多糖果的孩子

分析

  1. 找到当前的最大糖果数:
    • 遍历数组 candies,找到当前孩子中糖果数目的最大值 max_candies
  2. 判断每个孩子是否可以成为拥有最多糖果的孩子:
    • 对于每个孩子 candies[i],计算其在分配额外糖果后拥有的糖果数:candies[i] + extraCandies
    • 如果结果大于或等于 max_candies,说明该孩子可以成为拥有最多糖果的孩子之一

时间复杂度

  • 寻找最大值:O(n)
  • 判断是否满足条件:O(n)

总时间复杂度:O(n)

空间复杂度

空间复杂度为 O(n)

C++代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution
{
public:
    vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies)
    {
        int n = candies.size();
        std::vector<bool> res(n);

        // 找到当前糖果的最大值
        int max_candies = 0;
        for (int i = 0; i < n; ++i)
            max_candies = std::max(max_candies, candies[i]);

        // 判断每个孩子在获得额外糖果后是否能成为最多糖果的孩子之一
        for (int i = 0; i < n; ++i)
            if (candies[i] + extraCandies >= max_candies)
                res[i] = true;

        return res;
    }
};
Built with Hugo
Theme Stack designed by Jimmy