Last Updated on 2023-04-17 by Clay
題目
There are n
kids with candies. You are given an integer array candies
, where each candies[i]
represents the number of candies the ith
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 ith
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
解題思路
這題沒什麼特別技巧,畢竟是 Easy,簡單直接解就可以了。
首先先確定陣列中最大的值,接著把陣列中所有元素加上額外值,看看是否大於原先陣列最大值,就可建構 bool 陣列並回傳。
C++ 範例程式碼
class Solution {
public:
vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies) {
// Init
int _max = 0;
vector<bool> results(candies.size());
// Get the maximum value of `candies`
for (int i=0; i<candies.size(); ++i) {
if (_max < candies[i]) {
_max = candies[i];
}
}
// Determine whether is larger than `_max`
for (int i=0; i<candies.size(); ++i) {
results[i] = (candies[i]+extraCandies >= _max);
}
return results;
}
};
Python 範例程式碼
class Solution:
def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
_max = max(candies)
return [candy+extraCandies>=_max for candy in candies]