31天【代码随想录算法训练营34期】第八章 贪心算法 part01(● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 )

贪心算法就是先选局部最优,再推全局最优
没有套路

  • 将问题分解为若干个子问题
  • 找出适合的贪心策略
  • 求解每一个子问题的最优解
  • 将局部最优解堆叠成全局最优解

455.分发饼干

class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()
        s.sort()
        output = 0
        s_i = len(s)-1

        for i in range(len(g)-1, -1, -1):
            if s_i >= 0 and g[i] <= s[s_i]:
                output += 1
                s_i -= 1
        return output
        

376. 摆动序列

class Solution:
    def wiggleMaxLength(self, nums: List[int]) -> int:
        if len(nums) == 1:
            return 1

        prediff = 0
        curdiff = 0
        count = 1
        for i in range(len(nums)-1):
            curdiff = nums[i+1] - nums[i]
            if (curdiff > 0 and prediff <= 0) or (curdiff < 0 and prediff >= 0):
                count += 1
                prediff = curdiff
        return count

53. 最大子序和

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        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
posted @   MiraMira  阅读(8)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示