首先先上原題:
背景闡述
輸入:candies = [2,3,5,1,3], extracandies = 3
輸出:[true,true,true,false,true]
解釋:孩子 1 有 2 個糖果,如果他得到所有額外的糖果(3個),那麼他總共有 5 個糖果,他將成為擁有最多糖果的孩子。
孩子 2 有 3 個糖果,如果他得到至少 2 個額外糖果,那麼他將成為擁有最多糖果的孩子。
孩子 3 有 5 個糖果,他已經是擁有最多糖果的孩子。
孩子 4 有 1 個糖果,即使他得到所有額外的糖果,他也只有 4 個糖果,無法成為擁有糖果最多的孩子。
孩子 5 有 3 個糖果,如果他得到至少 2 個額外糖果,那麼他將成為擁有最多糖果的孩子。
個人理解
通過對題目所給樣例的解釋說明,我們可理解為在給定乙個列表的情況下,每個列表中的值代表的是孩子手中擁有的糖果個數。而我們所需要做的就是在給定額外糖果個數的前提下,求解出每個孩子所擁有的最大個數的糖果,並將擁有最大糖果數的孩子返回為對應的布林值。所以此題最直接的做法便是求解出列表中最大的那個值。然後通過遍歷中每個元素,並進行相應的相加操作。來判斷是否此孩子是否是擁有最多的糖果的那個孩子即可。尋找列表中最大的那個元素,我們可以利用列表中的max()或者sort()方法後直接求列表中的最後乙個元素。具體的問題流程解決如下。
class
solution
:def
kidswithcandies
(self, candies: list[
int]
, extracandies:
int)
-> list[
bool]:
list_candies =
for i in
range
(len
(candies)):
# 當然此處求解列表中最大的元素也可以使用以下語句:list.sort()/list[-1]來完成對最大元素的求解。
max_child =
max(candies)
+ extracandies >= max_child)
return list_candies
該方法的整體時間複雜度為o(n),空間複雜度為o(1)。
同時演算法在執行器裡面執行時的記憶體消耗和執行時間如下:
演算法,在很多時候,並不是有多麼的高大上。而更多地是由每乙個最為基本的演算法思想和步驟所組成的。所以我們在遇到問題時,更多的應該學會將問題拆解,逐漸劃分成我們所能用程式語言表的每一步,然後在逐漸對問題進行還原。這便是演算法的魅力所在。在此,也祝看到這裡的你們六一兒童節快樂呀。畢竟哪個大人不是由那個懵懂天真的兒童所變化而來的呢?
六一兒童節
六一兒童節,老師帶了很多好吃的巧克力到幼兒園。每塊巧克力j的重量為w j 對 於每個小朋友i,當他分到的巧克力大小達到h i 即w j h i 他才會上去表演節目。老師的目標是將巧克力分發給孩子們,使得最多的小孩上台表演。可以保證每個w i 0且不能將多塊巧克力分給乙個孩子或將一塊分給多個孩子。第一...
六一兒童節
六一兒童節,老師帶了很多好吃的巧克力到幼兒園。每塊巧克力j的重量為w j 對於每個小朋友i,當他分到的巧克力大小達到h i 即w j h i 他才會上去表演節目。老師的目標是將巧克力分發給孩子們,使得最多的小孩上台表演。可以保證每個w i 0且不能將多塊巧克力分給乙個孩子或將一塊分給多個孩子。imp...
寫在六一兒童節
六一兒童節,大朋友 小朋友們,節日快樂 感謝你們深夜點開我這長圖 好久沒有寫東西了,好幾次都有寫作的衝動,可是,每次提筆的時候感覺好沉重,又好匱乏的樣子,似乎有很多東西要表達,又無從下手,甚至於一兩個字都蹦不出來窘態,冥冥之中是自廢武功好幾年的感慨,是啊,自從那年的出走,文字寫作的習慣戛然而止,趁著...