六一兒童節之LeetCode習題總結 演算法(14)

2021-10-06 17:32:46 字數 1638 閱讀 3333

首先先上原題:

背景闡述

輸入: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...

寫在六一兒童節

六一兒童節,大朋友 小朋友們,節日快樂 感謝你們深夜點開我這長圖 好久沒有寫東西了,好幾次都有寫作的衝動,可是,每次提筆的時候感覺好沉重,又好匱乏的樣子,似乎有很多東西要表達,又無從下手,甚至於一兩個字都蹦不出來窘態,冥冥之中是自廢武功好幾年的感慨,是啊,自從那年的出走,文字寫作的習慣戛然而止,趁著...