Skip to content

LeetCode: 1431-Kids With the Greatest Number of Candies 解題紀錄

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]

References


Read More

Leave a Reply