leetcode 分饼干 贪心算法python
生活随笔
收集整理的這篇文章主要介紹了
leetcode 分饼干 贪心算法python
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
樣例
樣例1:
輸入:[1,2,3], [1,1]
輸出:1
說明:你有三個孩子和兩塊餅干,三個孩子的貪吃指數分別是1,2,3
雖然你有兩塊餅干,但是因為它們的大小都為1,你只能滿足讓貪吃指數為1的孩子滿足,因此你應該輸出1
樣例2:
輸入:[1,2], [1,2,3]
輸出:2
說明:你有兩個孩子和三塊餅干,兩個孩子的貪吃指數分別是1和2
這三塊餅干的大小足以滿足所有的孩子,因此你應該輸出2
貪心算法求解
貪心算法原理:
貪心策略是指從問題的初始狀態出發,通過若干次貪心選擇得出最優值(或較優解)的一種解法。其實,從“貪心策略”一詞可以看出,貪心策略總是做出在當前看來最優的選擇。也就是說,貪心策略并不是從整體上 考慮問題,他所作的選擇只是在某種意義上的局部最優解,而許多問題自身的特性決定了該題運用貪心策略可以得到最優解或者比較好的解。
特點:
1)貪心選擇的性質:所謂貪心選擇的性質是指應用同一規劃,將原問題變為一個相似的但規模更小的子問題,而后做出的每一步選擇都是當前看似最佳的選擇。這種選擇依賴于已做出的選擇,但不依賴于未做出 的選擇。從全局來看,運用貪心解決的問題在程序運行過程中無回溯過程。
2)局部最優解:局部最優解是貪心的數學描述。
本題思路:盡量用小的餅干滿足小的胃口:
代碼1
class Solution:"""@param g: children's greed factor@param s: cookie's size@return: the maximum number"""def findContentChildren(self, g, s):# Write your code hereg.sort()#對小朋友胃口進行排序s.sort()#對餅干進行排序i=0#記錄結果for cookie in s:#遍歷餅干if i >=len(g):#如果結果長度大于等于小朋友長度,說明每個小朋友都進行了一次判斷,退出breakif g[i]<=cookie: #如果胃口小于餅干尺寸i+=1#換下一個小朋友胃口來判斷return i c=Solution() d=c.findContentChildren([1,2], [1,2,3]) print(d)結果:2
代碼2
class Solution:def findContentChildren(self, children, cookies):children.sort()cookies.sort()res=0 #記錄結果g=0#記錄小朋友胃口s=0#記錄餅干while g<len(children) and s<len(cookies):if children[g]<=cookies[s]:#如果當前小朋友胃口<=當前餅干尺寸s+=1 #餅干加1g+=1#小朋友加1res+=1#結果加1else: #s+=1 #餅干加1,換下一塊餅干來和當前小朋友匹配return resc=Solution() d=c.findContentChildren([1,2], [1,2,3]) print(d)結果:2
總結
以上是生活随笔為你收集整理的leetcode 分饼干 贪心算法python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BGM71陶氏反战车导弹?
- 下一篇: websocket python爬虫_p