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