-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKidsWithTheGreatestNumberOfCandies.ts
73 lines (66 loc) · 2.58 KB
/
KidsWithTheGreatestNumberOfCandies.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// Source : https://leetcode.com/problems/kids-with-the-greatest-number-of-candies/
// Author : squxq
// Date : 2023-09-10
/*****************************************************************************************************
*
* There are n kids with candies. You are given an integer array candies, where each candies[i]
* represents the number of candies the i^th kid has, and an integer extraCandies, denoting the number
* of extra candies that you have.
*
* Return a boolean array result of length n, where result[i] is true if, after giving the i^th kid
* all the extraCandies, they will have the greatest number of candies among all the kids, or false
* otherwise.
*
* Note that multiple kids can have the greatest number of candies.
*
* Example 1:
*
* Input: candies = [2,3,5,1,3], extraCandies = 3
* Output: [true,true,true,false,true]
* Explanation: If you give all extraCandies to:
* - Kid 1, they will have 2 + 3 = 5 candies, which is the greatest among the kids.
* - Kid 2, they will have 3 + 3 = 6 candies, which is the greatest among the kids.
* - Kid 3, they will have 5 + 3 = 8 candies, which is the greatest among the kids.
* - Kid 4, they will have 1 + 3 = 4 candies, which is not the greatest among the kids.
* - Kid 5, they will have 3 + 3 = 6 candies, which is the greatest among the kids.
*
* Example 2:
*
* Input: candies = [4,2,1,1,2], extraCandies = 1
* Output: [true,false,false,false,false]
* Explanation: There is only 1 extra candy.
* Kid 1 will always have the greatest number of candies, even if a different kid is given the extra
* candy.
*
* Example 3:
*
* Input: candies = [12,1,12], extraCandies = 10
* Output: [true,false,true]
*
* Constraints:
*
* n == candies.length
* 2 <= n <= 100
* 1 <= candies[i] <= 100
* 1 <= extraCandies <= 50
******************************************************************************************************/
export function kidsWithCandies(
candies: number[],
extraCandies: number,
): boolean[] {
// first submit - approach 1
// const results: boolean[] = Array(candies.length).fill(false)
// const maxCandies: number = Math.max(...candies)
// for (let i: number = 0; i < candies.length; i++) {
// if (candies[i] + extraCandies >= maxCandies) results[i] = true
// }
// return results
// second submit - approach 1 optimization
const results: boolean[] = [];
const maxCandies: number = Math.max(...candies);
for (let i: number = 0; i < candies.length; i++) {
if ((candies[i] as number) + extraCandies >= maxCandies) results[i] = true;
else results[i] = false;
}
return results;
}