代码随想录训练营第27天 || 455. 分发饼干 376. 摆动序列 53. 最大子数组和

455. 分发饼干:

讲解:代码随想录

思想:

局部最优,把最大的饼干给胃口最大的孩子,因为目的是满足最多的孩子,最大的饼干可以满足胃口大的孩子,也可以满足胃口小的孩子,但是小的饼干只能满足胃口小的孩子

代码:

class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()
        s.sort()
        index = len(s)-1
        result = 0
        for i in range(len(g)-1,-1,-1):#range(len(g)-1, -1, -1) 中的 -1:是 range 函数的参数,用于定义序列的结束值和步长。
列表索引中的 -1:用于访问列表的最后一个元素。
            if index>= 0 and s[index] >=g[i]:
                result+=1
                index-=1
        return result

遇到的问题:

1.对于先遍历谁的问题,只能是饼干去匹配小孩的胃口,

376. 摆动序列

讲解:代码随想录

思想:

局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值

整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列

代码:

class Solution:
    def wiggleMaxLength(self, nums: List[int]) -> int:
        result = 1#默认为1,是因为如果数组的长度大于2,不会计算最后末尾的,但是末尾的一定符合条件
        if len(nums)<=1:
            return len(nums)
        prediff = 0
        curdiff = 0

        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
                prediff=curdiff
        return result
            

            

遇到的问题:

1.对于特殊情况的理解,对于只有两个元素的情况,为了符合大于两个元素的判断情况,让result默认为1,

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 result<count:
                result = count
            if count<=0:
                count = 0
        return result
            

遇到的问题:

1.对于第二个将count重置为0时,会影响result:但是观察发现在判断result和count的关系前,count就已经加上了数组内的数,所以不用担心数组内全是负数的情况

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值