算法随想录第三十一天打卡|理论基础 , 455.分发饼干 , 376. 摆动序列 , 53. 最大子序和

理论基础 

代码随想录

455.分发饼干 

思路

先从小胃口,小饼干开始的开始

class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()    
        s.sort()
        #先满足胃口最小的孩子
        i=0 #孩子的序号
        j=0 #饼干的序号
        while i

总结

确实没有规律,就一个找最好的情况,要靠脑子。

376. 摆动序列  

代码随想录

class Solution:
    def wiggleMaxLength(self, nums: List[int]) -> int:
        result=1
        cur_dif=0
        pre_dif=0
        if len(nums)<=2:
            return 1
        for i in range(len(nums)-1):
            cur_dif=nums[i+1]-nums[i]
            if (cur_dif<0 and pre_dif>=0) or (cur_dif>0 and pre_dif<=0):
                result+=1
                pre_dif=cur_dif
        return result

总结

我从i=2的时候开始的,整了半天没整出来,我想应该是我又用i-1又用i又用i+1导致的result总少一个。通过这种标记的方法就可以很好地解决开头的问题。

53. 最大子序和  

代码随想录

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

总结

就应该如卡哥所说,没思路就直接看答案。果然我连答案也看不太明白。 结果为正数表示还有成为最大值的可能性,但为负数就可以直接省去了,不过这是最优解的问题吗,这不是逻辑的问题吗?

你可能感兴趣的:(算法)