2461. 长度为 K 子数组中的最大和(c++)

给你一个整数数组 nums 和一个整数 k 。请你从 nums 中满足下述条件的全部子数组中找出最大子数组和:

  • 子数组的长度是 k,且
  • 子数组中的所有元素 各不相同 。

返回满足题面要求的最大子数组和。如果不存在子数组满足这些条件,返回 0 。

子数组 是数组中一段连续非空的元素序列。

示例 1:

输入:nums = [1,5,4,2,9,9,9], k = 3
输出:15
解释:nums 中长度为 3 的子数组是:
- [1,5,4] 满足全部条件,和为 10 。
- [5,4,2] 满足全部条件,和为 11 。
- [4,2,9] 满足全部条件,和为 15 。
- [2,9,9] 不满足全部条件,因为元素 9 出现重复。
- [9,9,9] 不满足全部条件,因为元素 9 出现重复。
因为 15 是满足全部条件的所有子数组中的最大子数组和,所以返回 15 。

示例 2:

输入:nums = [4,4,4], k = 3
输出:0
解释:nums 中长度为 3 的子数组是:
- [4,4,4] 不满足全部条件,因为元素 4 出现重复。
因为不存在满足全部条件的子数组,所以返回 0 。

提示:

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

滑动窗口

例如:

class Solution {
public:long long maximumSubarraySum(vector<int>& nums, int k) {long long res=0,sum=0; // 定义结果变量 res 和子数组和 sum,初始化为 0int count=0; // 记录子数组中不同元素的个数int visit[100001]={0}; // 使用数组 visit 记录每个元素出现的次数,数组大小为 100001,初始化为 0for (int i = 0; i <k ; ++i) { // 遍历数组 nums 的前 k 个元素sum+=nums[i]; // 更新子数组和visit[nums[i]]++; // 更新元素 nums[i] 的出现次数if (visit[nums[i]]==1){ // 如果元素 nums[i] 是第一次出现count++; // 增加不同元素的计数}}if (count==k){ // 如果子数组中的不同元素个数等于 kres=sum; // 更新结果为当前子数组和}for (int i = k; i <nums.size() ; ++i) { // 从第 k 个元素开始遍历数组 numssum=sum+nums[i]-nums[i-k]; // 更新子数组和,减去最旧的元素,加上最新的元素visit[nums[i]]++; // 更新最新元素的出现次数if (visit[nums[i]]==1){ // 如果最新元素是第一次出现count++; // 增加不同元素的计数}visit[nums[i-k]]--; // 更新最旧元素的出现次数if (visit[nums[i-k]]==0){ // 如果最旧元素不再出现count--; // 减少不同元素的计数}if (count==k){ // 如果子数组中的不同元素个数等于 kres= max(res,sum); // 更新结果为当前子数组和与历史最大值的较大者}}return res; // 返回结果
}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式6——单例模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 单例模式&#xff08;Singleto…

完成商品属性分组和商品属性关联维护

文章目录 1.前端页面搭建1.复制attrgroup-attr-relation.vue到src/views/modules/commodity下2.加入超链接和引入组件 src/views/modules/commodity/attrgroup.vue1.加入超链接2.引入组件 3.数据池加入变量4.使用组件1.引用组件2.添加方法3.测试&#xff0c;点击关联&#xff0…

建站平台布局结构

建站平台布局结构对于网站的成功至关重要。一个良好的布局结构能够有效地吸引用户&#xff0c;提升用户体验&#xff0c;并且有助于网站的搜索引擎优化&#xff08;SEO&#xff09;。在设计网站布局结构时&#xff0c;需要考虑到用户导航、信息层次结构、页面加载速度等方面&am…

Jackson的使用技巧,实现一个JSON字符串转Map的工具

Jackson Jackson是Java编程语言中使用非常广泛的一个用于处理JSON格式数据的库。它提供了快速、灵活、功能丰富的方式来解析和生成JSON数据。Jackson的一些显著优势包括: 1. 高性能 Jackson在处理大型JSON数据时展现出了优异的性能。它采用了高效的处理方式和算法来解析和…

椋鸟Linux笔记#0:学习Linux前

文章目录 关于LinuxLinux环境的搭建直接安装Linux系统安装在虚拟机上安装为WSL2子系统使用云服务白嫖云服务&#xff08;不是广告&#xff09; 直接控制台连接远程服务器使用XShell连接远程服务器 萌新的学习笔记&#xff0c;写错了恳请斧正。 关于Linux Linux 是一种开源操作…

Android JetPack快速上手

学习地址 【Android Jetpack组件从入门到入坟&#xff0c;全家桶全面学习教程精讲&#xff0c;通俗易懂】 review 研究生期间接触过一部分android开发&#xff0c;近期有个小项目需要进行开发&#xff0c;临时恶补了一下Android相关知识点&#xff0c;突然发现Android新增了…

学习javascript的数组

1.什么是数组? 数组&#xff1a;&#xff08;Array&#xff09;是一种数据类型&#xff0c;属于引用数据类型。 作用&#xff1a;在单个变量名下存储多个数据 2.声明语法 let 数组名 [数据1&#xff0c;数据2......]; 注意事项&#xff1a; 数组是按照顺序保存&#xff0…

企业级大数据平台建设方案

企业级大数据平台建设方案 方案简介硬件软件分布式存储&#xff1a;Foreman作为集群管理工具Sparkcloudera 方案简介 该方案是多年前在Roadstar.ai任职时的建设方案&#xff0c;现将方案部分细节开源&#xff0c;结合本博客的其他文章&#xff0c;能够建立可靠的企业大数据平台…

来盘点我的校园生活(4)

今天我们班出大事了&#xff01; 今天英语老师没来&#xff0c;我们以为其他英语老师来了&#xff0c;但下午一去办公室&#xff0c;我小脑直接萎缩&#xff0c;我都看得怀疑人生了&#xff0c;一个英语老师没有&#xff0c;作业咋办呢&#xff1f; 后来通过18班班主任英语老…

ollama导入自己微调后的模型胡言乱语

1.ollama导入自己微调后的模型胡言乱语 原因&#xff1a;Modelfile的模板格式不对&#xff0c;对的如下所示 ##格式0FROM tinyllama-my-model.gguf### Set the system message SYSTEM """ You are a super helpful helper. """PARAMETER stop …

VBA语言専攻每周通知20240524

通知20240524 各位学员∶本周MF系列VBA技术资料增加611-615讲&#xff0c;T3学员看到通知后请免费领取,领取时间5月24日晚上18:00-5月26日晚上18:00。本次增加内容&#xff1a; MF611:用InputBox录入日期 MF612:信息提示10秒后关自动关闭 MF613:只是信息提示10秒 MF614:显…

代码随想录算法跟练 | Day3 | 链表Part1

个人博客主页&#xff1a;http://myblog.nxx.nx.cn 代码GitHub地址&#xff1a;https://github.com/nx-xn2002/Data_Structure.git Day3 203.移除链表元素 题目链接&#xff1a; https://leetcode.cn/problems/remove-linked-list-elements/ 题目描述&#xff1a; 给你一个…

如何解决Nginx反向代理不生效?

目录 背景 过程 日志 检查配置文件 重启服务 检查容器内的配置文件 容器和宿主机 其他 背景 用了两年的nginx新加的反向代理不生效 Docker挂载的配置文件启动的Nginx&#xff0c;配置一切正常&#xff0c;但是反向代理不生效&#xff0c;???先自查一波 过程 日志 …

【FAQ】HarmonyOS SDK 闭源开放能力 —Ads Kit

1.问题描述&#xff1a; 开屏广告效果最好的实现方式&#xff1f; 解决方法&#xff1a; 1、动画效果和开发者的实现方式有关&#xff0c;和开屏广告页面本身没什么关系的&#xff1b; 2、示例代码中使用Router跳转的方式展示广告&#xff0c;主要是用于演示广告接口怎么集…

RDDM论文阅读笔记

CVPR2024的残差去噪模型。把diffusion 模型的加噪过程分解为残差diffusion和noise diffusion&#xff0c;其中残差diffusion模拟从target image到degraded image的过程&#xff0c;而noise diffusion则是原来的diffusion过程&#xff0c;即从图片到高斯噪声的加噪过程。前者可以…

rocketmq 学习一

官方文档&#xff1a;RocketMQ 官方网站 | RocketMQ 一 介绍 RocketMQ 诞生于 2012 年&#xff0c;诞生即开源。2012&#xff5e;2015 年&#xff0c;RocketMQ 一直在通过内部电商业务打磨自身服务能力,并在 2015 年于阿里云上线公测。2016 年&#xff0c;阿里云 RocketMQ 完…

如何让社区版IDEA变得好用

如何让社区版IDEA变得好用 背景 收费版的idea功能非常强大&#xff0c;但是费用高。社区版的免费&#xff0c;但是功能被阉割了。如何才能让社区版Idea变得好用&#xff0c;就需要各种插件支持了。经过全局配置编码&#xff0c;maven&#xff0c;jdk版本&#xff0c;在加上各…

《扑克牌游戏》

描述 有一个扑克牌游戏&#xff0c;游戏规则是不断地摸牌&#xff0c;尽可能地使手上的牌的点数接近于10&#xff0c;最完美的情况是总点数为10&#xff0c;不可以超过10&#xff0c;否则就爆了。输入10张牌的点数&#xff0c;(每张点数不超过10)&#xff0c;请你输出用户应该抓…

架构二。。

1、CAP 只能3选2 1&#xff09;一致性&#xff08;Consistency&#xff09; 客户每次读都是返回最新的写操作结果 2&#xff09;可用性&#xff08;Availability&#xff09; 非故障节点在合理的时间内返回合理的响应 3&#xff09;分区容忍性&#xff08;Partition Tolerance…

Ribbon负载均衡(自己总结的)

文章目录 Ribbon负载均衡负载均衡解决的问题不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了Ribbon负载均衡代码怎么写ribbon负载均衡依赖是怎么引入的&#xff1f; Ribbon负载均衡 负载均衡解决的问题 首先Ribbon负载均衡配合Eureka注册中心一块使用。 在SpringCloud…