LeetCode-03-最多糖果的孩子

LeetCode算法题:寻找糖果数最多的孩子。

题目

LeetCode:LeetCode 75 - 学习计划-03-拥有最多糖果的孩子

n 个有糖果的孩子。给你一个数组 candies,其中 candies[i] 代表第 i 个孩子拥有的糖果数目,和一个整数 extraCandies 表示你所有的额外糖果的数量。

返回一个长度为 n 的布尔数组 result,如果把所有的 extraCandies 给第 i 个孩子之后,他会拥有所有孩子中 最多 的糖果,那么 result[i]true,否则为 false

注意,允许有多个孩子同时拥有 最多 的糖果数目。

思路

题目简单,两次循环即可。首次遍历出最大值,二次将变化后的累加值与最大值比较。

代码

以下代码时间复杂度为O(n)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize) 
{
assert(candies);
assert(returnSize);
bool *result = (bool*)malloc(sizeof(bool)*candiesSize);

int candiesMax = 0;
for(int i=0; i< candiesSize; i++)
{
candiesMax < candies[i]? ( candiesMax = candies[i] ):0;
}
for( int i=0; i<candiesSize; i++)
{
result[i] = (candies[i] + extraCandies >= candiesMax)? true : false;
}
*returnSize = candiesSize;
return result;
}

————————— End —————————

有理想