当前位置: 首页 > news >正文

【LeetCode刷题-滑动窗口】--1695.删除子数组的最大得分

1695.删除子数组的最大得分

image-20231116174820798

注意:子数组为不同元素

方法:滑动窗口

使用变长滑动窗口寻找数组nums中的以每个下标作为结束下标的元素各不相同的最长子数组。用[start,end]表示滑动窗口,初始时start=end=0,将滑动窗口的右端点end向右移动,移动过程中维护滑动窗口的左端点start,对于每个end寻找元素各不相同的最大滑动窗口

判断滑动窗口中是否有重复元素,需要使用哈希集合存储滑动窗口中出现的元素,用sum表示滑动窗口中的元素和。对于每个右端点end,将右端点处的元素记为num = nums[end],执行如下操作:

  • 将sum的值增加为num
  • 如果哈希集合中有元素num,则滑动窗口[start,end]中有两个元素num,因此将sum的值减去nums[start],从哈希集中中移除元素nums[start],然后将start向右移动一位,重复该操作直到哈希集合中没有元素num
  • 当前滑动窗口[start,end]中的子数组为以end作为结束下标的元素各不相同的最长子数组,其元素和为sum,使用sum更新最大得分
class Solution {public int maximumUniqueSubarray(int[] nums) {Set<Integer> set = new HashSet<Integer>();int maxSum = 0,sum = 0,start = 0,end = 0,len = nums.length;while(end < len){int num = nums[end];sum += num;while(set.contains(num)){sum -= nums[start];set.remove(nums[start]);start++;}set.add(num);maxSum = Math.max(maxSum,sum);end++;}return maxSum;}
}
http://www.lryc.cn/news/231971.html

相关文章:

  • iOS OpenGL ES3.0入门实践
  • 网络基础(一)
  • SQLServer添加Oracle链接服务器
  • 2017年计网408
  • UE5中APlayerController属性与方法列表(翻译中......)
  • TCP连接保活机制
  • centos安装mysql8.0.20、tar包安装方式
  • k8s yaml文件含义
  • ProEasy机器人:运动+通讯相关说明
  • Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + CMake)
  • 年产200万件的超级工厂投产!巨头「闭环」汽车电子全产业链
  • 智能穿戴AR眼镜主板方案定制_MTK平台AR智能眼镜PCB板开发
  • 【入门Flink】- 11Flink实现动态TopN
  • 现在做跨境电商还需要全球代理IP吗?全球代理IP哪家靠谱?
  • 微服务的常用组件
  • Android问题笔记四十五:解决SeekBar操作thumb周围产生的圆形阴影/灰色阴影/白色圆圈的解决办法
  • AI从入门到精通,什么是LLMs大型语言模型?
  • 优测云测试平台 | 有效的单元测试(下)
  • CUDA安装
  • 【XTDrone Ubuntu18.04】XTDrone + Ubuntu18.04 + PX4 安装过程
  • 网站使用什么协议比较好
  • 18. 机器学习——集成学习
  • SimaPro生命周期评估建模与碳足迹分析流程
  • 我的项目分享(不喜勿喷)
  • PyTorch:张量与矩阵
  • 传统广电媒体为何选择上云?有何优势?
  • 系列十、堆参数调优
  • sqlite3简单使用
  • 实测文心一言4.0,真的比GPT-4毫不逊色吗?
  • 损失函数——KL散度(Kullback-Leibler Divergence,KL Divergence)