代码随想录算法训练营第31天 |贪心算法 455、376、53

总结

455. 分发饼干

题目链接:

leecode-455

自己想

1.关键点在于有可能饼干数量多,也有可能孩子数量多,循环条件要确定好!

看完题解
完整代码
class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        
        child_g = sorted(g, reverse=True)
        cookit_s = sorted(s,reverse=True)

        if not cookit_s or cookit_s[0]<child_g[-1]:
            return 0
        
        cookit_p = 0
        child_p = 0
        num = 0
        while cookit_p < len(cookit_s) and child_p < len(child_g):

            if cookit_s[cookit_p] >= child_g[child_p]:
                num += 1
                child_p += 1
                cookit_p += 1
            else:
                child_p += 1 
                continue 

        return num

376. 摆动序列

题目链接:

leecode-376

自己想
看完题解

最大摆动序列问题,分了三种情况叙述,

第一种:存在平坡:解决的办法就是首先判断取平坡中的首选素还是尾元素,假设取尾元素,那么将等于判断加入前面。
第二种:首尾元素:默认加入尾元素,则初始为1
第三种:单调平坡:jutitrick就是将prediff=curdiff放在判断条件里,不要一直赋值,而是不同才赋值

完整代码
class Solution:
    def wiggleMaxLength(self, nums: List[int]) -> int:
        def is_between(n,a,b):
            if a < n < b or b < n < a:
                return True
            else:
                return False
        
        if len(nums) == 1 or (len(nums) == 2 and nums[0] != nums[1]):
            return len(nums)
        if len(nums) == 2 and nums[0] == nums[1]:
            return 1
        
        i = 0
        result = 1
        prediff = 0
        curdiff = 0
        while i < 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
            i += 1
        return result

53. 最大子数组和

题目链接:

leecode-53

自己想
看完题解

1.本质就是和要为正,才有意义

完整代码
class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        result = nums[0]
        count = 0
        for i in range(0,len(nums)):
            count += nums[i]
            if result <= count:
                result = count
            if count <= 0:
                count = 0      
        return result

题目链接:

自己想
看完题解
完整代码
在这里插入代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值