代码随想录|贪心算法 455. 分发饼干
- 一、455. 分发饼干
- 1.代码
- 2.问题
- 二、376. 摆动序列
- 1.代码
- 三、53. 最大子数组和
- 1.代码
- 总结
python
一、455. 分发饼干
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. 摆动序列
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. 最大子数组和
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,应该设置未负无穷
总结
输入输出