Kids With the Greatest Number of Candies - LeetCode
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:
Output: [true,false,true]
Constraints:
n == candies.length
2 <= n <= 100
1 <= candies[i] <= 100
1 <= extraCandies <= 50
解析
每个kid有一定数量的糖果,将extra candies分别给到每一个kid,如果变成拥有最多的那个,返回true,否则是false。
class Solution:
def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
result = []
for i in range(len(candies)):
temp = candies.copy()
temp[i] += extraCandies
if max(temp) == temp[i]:
result.append(True)
else:
result.append(False)
return result
class Solution {
public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
List<Boolean> result = new ArrayList<>();
int max = 0;
for (int i = 0; i < candies.length; i++){
int[] temp = candies.clone();
temp[i] += extraCandies;
max = temp[0];
for (int j = 1;j < temp.length; j++) {
if (temp[j] > max) {
max = temp[j];
}
}
if (max == temp[i]){
result.add(true);
}
else {
result.add(false);
}
}
return result;
}
}
class Solution {
public:
vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies) {
vector<bool> result;
int maxCandy = 0;
for (int candy : candies){
maxCandy = max(candy + extraCandies, candies);
}
for (int candy : candies){
result.push_back(candy + extraCandies >= maxCandy);
}
return result;
}
private:
int max(int t, vector<int> candies){
int max = candies[0];
for (int i = 1; i < candies.size(); ++i) {
if (candies[i] > max){
max = candies[i];
}
}
return max;
}
};
最后看来,有值就可以,C++version就不错,没必要去clone或者copy。