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

Day7--滑动窗口与双指针--1695. 删除子数组的最大得分,2958. 最多 K 个重复元素的最长子数组,2024. 考试的最大困扰度

Day7–滑动窗口与双指针–1695. 删除子数组的最大得分,2958. 最多 K 个重复元素的最长子数组,2024. 考试的最大困扰度

今天要训练的题目类型是:【不定长滑动窗口】,题单来自@灵艾山茶府。

滑动窗口相当于在维护一个队列。右指针的移动可以视作入队,左指针的移动可以视作出队

不定长滑动窗口主要分为三类:求最长子数组,求最短子数组,求子数组个数。

今天的题目类型是:求最长子数组。

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

思路【我】:

  1. 题意:就是求最大子数组和,数组里面不能有相同的元素
  2. 不定长滑动窗口三步曲:入–出–更新
class Solution {public int maximumUniqueSubarray(int[] nums) {// 题意:就是求最大子数组和,数组里面不能有相同的元素int n = nums.length;int sum = 0;int maxSum = 0;int left = 0;// 利用map<元素,出现次数>记录窗口内元素的出现次数Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < n; i++) {// 1,入sum += nums[i];map.merge(nums[i], 1, Integer::sum);// 2,出while (map.get(nums[i]) > 1) {map.merge(nums[left], -1, Integer::sum);sum -= nums[left];left++;}// 3,更新maxSum = Math.max(maxSum, sum);}return maxSum;}
}

2958. 最多 K 个重复元素的最长子数组

思路【我】:

和上一题一模一样。只需要把while (map.get(nums[i]) > 1)改成while (map.get(nums[i]) > k)

class Solution {public int maxSubarrayLength(int[] nums, int k) {int n = nums.length;int left = 0;int maxLen = 0;Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < n; i++) {// 1,入map.merge(nums[i], 1, Integer::sum);// 2,出while (map.get(nums[i]) > k) {map.merge(nums[left], -1, Integer::sum);left++;}// 3,更新maxLen = Math.max(maxLen, i - left + 1);}return maxLen;}
}

2024. 考试的最大困扰度

思路【我】:

这题关键在于理解题意。题意:窗口内T或F的数量不能!同时!超过k(可以一方超过k)。

不定长滑动窗口三步曲:入–出–更新。

class Solution {public int maxConsecutiveAnswers(String answerKey, int k) {// 题意:窗口内T或F的数量不能!同时!超过k(可以一方超过k)char[] ch = answerKey.toCharArray();int n = ch.length;int t = 0;int f = 0;int left = 0;int maxLen = 0;for (int i = 0; i < n; i++) {// 1,入if (ch[i] == 'T') {t++;} else {f++;}// 2,出(仅在T和F同时超过k)while (t > k && f > k) {if (ch[left] == 'T') {t--;} else {f--;}left++;}// 3,更新maxLen = Math.max(maxLen, i - left + 1);}return maxLen;}
}
http://www.lryc.cn/news/624828.html

相关文章:

  • 负载均衡终极指南:从流量分发到云原生架构的核心解析
  • Apache IoTDB集群部署实战:1C2D架构的高性能时序数据库搭建与优化指南
  • 第4章-04-用WebDriver页面元素操作
  • onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT fromUser false
  • 告别 DOM 的旧时代:从零重塑 Web 渲染的未来
  • scikit-learn/sklearn学习|弹性网络ElasticNet解读
  • LINUX 818 shell:random;for for
  • 咨询进阶——解读咨询顾问技能模型
  • 2025 年世界职业院校技能大赛汽车制造与维修赛道高职组资讯整合
  • Unity开发中的浅拷贝与深拷贝
  • 做一个答题pk小程序多少钱?
  • Golang資源分享
  • USB基础 -- 字符串描述符 (String Descriptor) 系统整理文档
  • C++中内存池(Memory Pool)详解和完整示例
  • Mongodb(文档数据库)的安装与使用(文档的增删改查)
  • 可实时交互的AI生成世界,腾讯发布的AI框架Yan
  • 对象存储 COS 端到端质量系列 —— 终端网络诊断工具
  • EMC PCB 设计规范
  • 上汽通用牵手Momenta,别克至境L7全球首发搭载R6飞轮大模型
  • 用随机森林填补缺失值:原理、实现与实战
  • 深度学习必然用到的概率知识
  • 94、23种设计模式之工厂方法模式
  • Redis--day8--黑马点评--分布式锁(一)
  • 单片机驱动LCD显示模块LM6029BCW
  • 机器学习-决策树:从原理到实战的机器学习入门指南
  • LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测)
  • VectorDB+FastGPT一站式构建:智能知识库与企业级对话系统实战
  • 【Python 小工具】一键把源表 INSERT SQL 转换成目标表 INSERT SQL
  • 华为认证 HCIA/HCIP/HCIE 全面解析(2025 版)
  • Next.js 性能优化:打造更快的应用