【每日一題】LeetCode. 1431. 擁有最多糖果的孩子(力扣君的兒童節專題 = =)

每日一題,防止癡呆 = =
大家兒童節快樂!!! 程序員啥節都過

一、題目大意

給你一個數組 candies 和一個整數 extraCandies ,其中 candies[i] 代表第 i 個孩子擁有的糖果數目。

對每一個孩子,檢查是否存在一種方案,將額外的 extraCandies 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意,允許有多個孩子同時擁有 最多 的糖果數目。
在這裏插入圖片描述
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/kids-with-the-greatest-number-of-candies

二、題目思路以及AC代碼

沒想到兒童節在力扣還能收穫驚喜 ^_^
在這裏插入圖片描述
這評論也是夠快樂的。

思路

這題就是福利題了,官解裏給了枚舉方法,但我覺得這題怎麼也不會有人真的上來就想O(n^2)的方法吧,抽象一下題目,就是說給定一個數組,如果第i個數在加入extraCandies個糖果後可以成爲最大值,那麼結果數組中其就爲true,否則爲false。

那麼這樣一看思路就很簡單了,先用O(n)求取一下數組最大值,然後再遍歷數組,如果該元素加上extraCandies大於等於最大值,則結果數組爲true,否則爲false,這一步的複雜度也是O(n)。

AC代碼
class Solution {
public:
    vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies) {
        vector<bool> res;
        int c_size = candies.size();
        if (!c_size) return res;

        int c_max = candies[0];
        for (int i=1;i<c_size;i++) {
            c_max = max(c_max, candies[i]);
        }

        for (int i=0;i<c_size;i++) {
            if (candies[i] + extraCandies >= c_max) res.push_back(true);
            else res.push_back(false);
        }

        return res;
    }
};

如果有問題,歡迎大家指正!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章