b_lc_删除子数组的最大得分(前缀和+滑动窗口)

从数组A中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。
返回 只删除一个 子数组可获得的 最大得分 。

思路:前缀和+滑动窗口

class Solution:
    def maximumUniqueSubarray(self, A: List[int]) -> int:
        n=len(A)
        s=[0]*(n+5)
        for i in range(n):
            s[i+1]=s[i]+A[i]
        mp=[0]*(int(1e5+5))
        l=r=ans=0
        while r<n:
            if not mp[A[r]]:
                mp[A[r]]=1
                r+=1
            elif l<n:
                mp[A[l]]=0
                l+=1
            ans=max(ans, s[r]-s[l])
        return ans
posted @ 2020-12-20 11:59  童年の波鞋  阅读(106)  评论(0编辑  收藏  举报