您的位置:首页 > 游戏 > 游戏 > 网店营销技巧讨论_seo外包服务项目_浙江网站建设平台_朋友圈推广平台

网店营销技巧讨论_seo外包服务项目_浙江网站建设平台_朋友圈推广平台

2025/5/8 20:47:27 来源:https://blog.csdn.net/2301_80195716/article/details/147016089  浏览:    关键词:网店营销技巧讨论_seo外包服务项目_浙江网站建设平台_朋友圈推广平台
网店营销技巧讨论_seo外包服务项目_浙江网站建设平台_朋友圈推广平台

项目场景:

给你一个正整数数组 nums ,请你从中删除一个含有 若干不同元素 的子数组删除子数组的 得分 就是子数组各元素之  。

返回 只删除一个 子数组可获得的 最大得分 。

如果数组 b 是数组 a 的一个连续子序列,即如果它等于 a[l],a[l+1],...,a[r] ,那么它就是 a 的一个子数组。

示例 1:

输入:nums = [4,2,4,5,6]
输出:17
解释:最优子数组是 [2,4,5,6]

示例 2:

输入:nums = [5,2,1,2,5,2,1,2,5]
输出:8
解释:最优子数组是 [5,2,1] 或 [1,2,5]

提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 104


问题描述

        这题要求删除一个含不同元素的最优子数组,求最大得分。显然这题可以用滑动窗口来解决,在遍历的过程中,利用哈希表记录元素的出现次数,如果超过一次就需要不断调整窗口左端点来使得各元素只出现一次,同时记录最大的ans值,ans值的维护也可在遍历过程中加入一个cur变量,效率会更高,这里为了方便使用了sum。

class Solution:def maximumUniqueSubarray(self, nums: List[int]) -> int:ans=left=0cnt=defaultdict(int)for right,x in enumerate(nums):cnt[x]+=1while cnt[x]>1:cnt[nums[left]]-=1if cnt[nums[left]]==0:del cnt[nums[left]]left+=1ans=max(ans,sum(nums[left:right+1]))return ans

        以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光!    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com