贪心策略理论
贪心策略,从局部最优解寻找全局最优解。
455.分发饼干
方法一:大饼干优先
从最大饼干优先,先遍历胃口,再遍历饼干。局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。
可以尝试使用贪心策略,先将饼干数组和小孩数组排序。然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
g.sort()
s.sort()
index=len(s)-1
result=0
for i in range(len(g)-1,-1,-1):
if index>=0 and s[index]>=g[i]:
result+=1
index-=1
return result
方法二:小饼干优先
先遍历饼干,再遍历胃口,只要胃口比饼干小index就+=1
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
g.sort()
s.sort()
index=0
for i in range(len(s)):
if index<len(g) and g[index]<=s[i]:
index+=1
return index
376. 摆动序列(欠)
53. 最大子序和
class Solution:
def maxSubArray(self, nums):
result = float('-inf')
count = 0
for i in range(len(nums)):
count += nums[i]
if count > result:
result = count
if count <= 0:
count = 0
return result