本文主要是介绍代码随想录|Day31|贪心算法 part01|● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
455.分发饼干
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
# if not g or not s: 可以没有这句,因为后面index>=0已经涵盖了
# return 0
g.sort()
s.sort()
result = 0
index = len(s) - 1
for i in range(len(g)-1, -1, -1):
if index >= 0 and s[index] >= g[i]:
result += 1
index -= 1
return result
【思考】 加上index>=0不只是为了防止g或s为空,还为了防止饼干<人数则会越界:如g=[3],会出现g[-2]的情况,就是错误了!
可以按胃口分发饼干,从大到小;也可以按饼干发给胃口,从小到大。
376. 摆动序列
class Solution:
def wiggleMaxLength(self, nums: List[int]) -> int:
if len(nums) <= 1:
return len(nums)
len_pre = 0
result = 1
for i in range(len(nums)-1):
len_cur = nums[i+1] - nums[i] #i只能走到倒数第一个数,不然nums[i+1]就越界啦
if len_pre <= 0 and len_cur > 0 or len_pre >= 0 and len_cur < 0:
result += 1
len_pre = len_cur
return result
53. 最大子序和
class Solution:
def maxProfit(self, prices: List[int]) -> int:
result = 0
for i in range(len(prices) - 1):
count = prices[i+1] - prices[i]
if count > 0:
result += count
return result
方法二:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
result = 0
for i in range(len(prices) - 1):
count = max(prices[i+1] - prices[i], 0) #这样写也很好
result += count
return result
这篇关于代码随想录|Day31|贪心算法 part01|● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!