【代码随想录|贪心算法 455. 分发饼干 376. 摆动序列 53. 最大子数组和】

时间:2024-07-19 20:50:13

代码随想录|贪心算法 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,应该设置未负无穷

总结

输入输出