阅读量:0
代码随想录|贪心算法 455. 分发饼干
python
一、455. 分发饼干
1.代码
代码如下(示例):
class Solution: def findContentChildren(self,g,s): g.sort() s.sort() result=0 index=len(s)-1 for i in range(len(g)-1,-1,-1): if index >=0 and g[i]<=s[index]: result=result+1 index=index-1 return result if __name__=="__main__": g=list(map(int,input().strip().split(","))) s=list(map(int,input().strip().split(","))) solution=Solution() result=solution.findContentChildren(g,s) print(result)
2.问题
没return结果
没排序
经典str转列表输入,list map int strip split
二、376. 摆动序列
1.代码
代码如下(示例):
class Solution: def wiggleMaxLength(self,nums): if len(nums)<=1: return len(nums) up=down=1 #记录上升和下降摆动序列的最大长度 for i in range(1,len(nums)): if nums[i] > nums[i-1]: up=down+1 elif nums[i]<nums[i-1]: down=up+1 return max(up,down) if __name__=="__main__": nums=list(map(int,input().strip().split(','))) solution=Solution() result=solution.wiggleMaxLength(nums) print(result)
代码随想录上分析了一堆特殊情况,结果发现优化的代码用一个max就解决了,不想着删除,而是直接计算最少的一对波峰波谷
三、53. 最大子数组和
1.代码
代码如下(示例):
class Solution: def maxSubArray(self,nums): result=float('-inf') count=0 for i in range(0,len(nums)): count +=nums[i] if count> result: result = count if cunt<=0: count=0 return result if __name__=="__main__": nums=list(map(int, input().strip().split(","))) solution=Solution() result=solution.maxSubArray(nums) print(result)
这题的思路我自己想的差不多,但是测试都一部分负数集不通过,最后的问题是result的初始化我不应该设置为0,应该设置未负无穷
总结
输入输出