Day 31 代码随想录 贪心算法 第一天

本文介绍了三道编程题的解决方案,包括455题分发饼干的贪心策略,通过排序分配;376题摆动序列,判断连续元素差值的正负变化;以及53题最大子数组和,利用贪心思想求解最大连续子序列和。每道题都提供了Python实现代码。
摘要由CSDN通过智能技术生成


455. 分发饼干

   题目链接:455. 分发饼干
在这里插入图片描述

 
  这题就是把最大的给胃口最大的小孩。
在这里插入图片描述

class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        res=0
        g.sort()
        s.sort()
        start=len(s)-1
        for i in range(len(g)-1,-1,-1):
            if start>=0 and  s[start]>=g[i]:
                start-=1
                res+=1
        return res

376. 摆动序列

   题目链接:376. 摆动序列
在这里插入图片描述

 

思路

在这里插入图片描述
class Solution:
def wiggleMaxLength(self, nums: List[int]) -> int:
pre,cur,res=0,0,1
for i in range(len(nums)-1):
cur=nums[i+1]-nums[i]
if pre*cur<=0 and cur!=0 :
res+=1
pre=cur
return res

53. 最大子数组和

   题目链接:53. 最大子数组和
在这里插入图片描述

 
  这题让我想到了滑动窗口,但是不是完全一样,也是要好好复习一下滑动窗口的。
贪心解法

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        res=-float('inf')
        count=0
        for i in range(len(nums)):
            count+=nums[i]
            if count>res:
                res=count
            if count<0:
                count=0
        return res

参考文章

贪心算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值