贪心part 1 分发饼干,摆动序列,最大子序和

455.分发饼干

代码随想录

分析:优先让大饼干满足大孩子胃口,若当前饼干不能满足当前孩子胃口,就换下一个孩子

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

376. 摆动序列

代码随想录

class Solution:
    def wiggleMaxLength(self, nums):
        if len(nums) <= 1:
            return len(nums)  # 如果数组长度为0或1,则返回数组长度
        curDiff = 0  # 当前一对元素的差值
        preDiff = 0  # 前一对元素的差值
        result = 1  # 记录峰值的个数,初始为1(默认最右边的元素被视为峰值)
        for i in range(len(nums) - 1):
            curDiff = nums[i + 1] - nums[i]  # 计算下一个元素与当前元素的差值
            # 如果遇到一个峰值
            if (preDiff <= 0 and curDiff > 0) or (preDiff >= 0 and curDiff < 0):
                result += 1  # 峰值个数加1
                preDiff = curDiff  # 注意这里,只在摆动变化的时候更新preDiff
        return result  # 返回最长摆动子序列的长度

53. 最大子序和

代码随想录

关键:只要和出现负数,就重新开始计数

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        res = 0
        tmp = 0
        if max(nums) < 0:
            return max(nums)
        #只要出现和为负数,就重新开始计数
        for i in range(len(nums)):
            tmp += nums[i]
            if tmp < 0:
                tmp = 0
            res = max(res,tmp)
        return res
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值