[Leetcode] 每日两题 689 530 -day34

689. 三个无重叠子数组的最大和

在这里插入图片描述

求 三个 无重叠的 k长度子组和最大, 那么 可以求一个 从0-i 最大值以及对应 下标, 求一个 i-末尾最大值以及对应下标, 那么 中间那个就从 k- len-k 扫过去 求max就行,然后保存下标

复杂度O(n) 不过样例不太友好 导致 时间很长,

class Solution:
    def maxSumOfThreeSubarrays(self, nums: List[int], k: int) -> List[int]:
        sumnum = [0]*(len(nums)-k+1)
        for i in range(len(nums)-k+1):
            sumnum[i] = sum(nums[i:i+k])
        N = len(sumnum) 
        max1=[sumnum[0]]*(N)
        max1under=[0]*(N)
        max2=[sumnum[N-1]]*(N)
        max2under=[N-1]*(N) 
        #sum1,sum2,sum3 =0,0,0
        for i in range(1,N):
            if sumnum[i] > max1[i-1]: 
                max1[i] = sumnum[i]
                max1under[i] = i
            else :
                max1[i] = max1[i-1]
                max1under[i] = max1under[i-1] 
        for i in range(N-2,-1,-1):
            if sumnum[i]>=max2[i+1]: 
                max2[i] =sumnum[i]
                max2under[i] = i
            else :
                max2[i] = max2[i+1]
                max2under[i] = max2under[i+1] 
        res = 0
        lis = []
        for i in range(k,len(nums)-k+1-k):
        #     maxnum= max(maxnum,dp1[0][i-k-1]+dp1[i+k][len(nums)-k-1]+sumnum[i])
            if res < sumnum[i]+max1[i-k]+max2[i+k]:
                res = sumnum[i]+max1[i-k]+max2[i+k]
                lis = [max1under[i-k],i,max2under[i+k]]
        #print(res,lis)
        return lis
530. 二叉搜索树的最小绝对差

在这里插入图片描述

中序遍历 遍历结果就是从小到大 然后记录值就好了

class Solution:
    res = 99999
    pre = 99999
    def getMinimumDifference(self, root: TreeNode) -> int:
        def Search(root):
            if root == None:
                return
            Search(root.left)
            self.res = min(self.res, abs(self.pre - root.val))
            self.pre = root.val
            Search(root.right)
        Search(root)
        return self.res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值