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

Rust 力扣 - 2841. 几乎唯一子数组的最大和

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

我们遍历长度为k的窗口,用一个哈希表记录窗口内的所有元素(用来对窗口内元素去重),我们取哈希表中元素数量大于等于m的窗口总和的最大值

题解代码

use std::collections::HashMap;

impl Solution {
    pub fn max_sum(nums: Vec<i32>, m: i32, k: i32) -> i64 {
        let mut win = HashMap::new();

        let mut sum = 0;

        for i in 0..k as usize {
            win.insert(nums[i], i);
            sum += nums[i] as i64;
        }

        let mut ans = 0i64;

        if win.len() >= m as usize {
            ans = ans.max(sum);
        }

        for i in k as usize..nums.len() {
            if let Some(&start) = win.get(&nums[i-k as usize]) {
                if start == i - k as usize {
                    win.remove(&nums[i-k as usize]);
                }
            }

            win.insert(nums[i], i);

            sum += (nums[i] - nums[i-k as usize]) as i64;

            if win.len() >= m as usize {
                ans = ans.max(sum);
            }
        }

        ans
    }
}

题目链接

https://leetcode.cn/problems/maximum-sum-of-almost-unique-subarray/description/


http://www.kler.cn/a/381641.html

相关文章:

  • 基于uniapp和java的电动车智能充电系统软件平台的设计
  • ES管理工具Cerebro 0.8.5 Windows版本安装及启动
  • Golang | Leetcode Golang题解之第540题有序数组中的单一元素
  • 练习LabVIEW第三十八题
  • 解决使用Golang的email库发送qq邮件报错short response,错误类型为textproto.ProtocolError
  • conda迁移虚拟环境路径
  • Ubuntu 20.04 部署向量数据库 Milvus + Attu
  • 【数据结构】哈希思想详解
  • 工作流之Flowable
  • 掌握ElasticSearch(八):聚集、文档间的关系
  • 解决阿里云三个月证书过期 免费SSL证书部署教程
  • Pytest参数详解 — 基于命令行模式!
  • 高级 <HarmonyOS主题课>让您的应用拥有领先的位置服务能力的课后习题
  • 测试自动化如何和业务流程结合?
  • 初识HTML
  • sql在hive和阿里云maxComputer的区别
  • 【俄罗斯市场必看】如何在VK上做营销
  • BERT框架
  • spring、mybatis、并发、虚拟机总结
  • 第三百一十一节 Java JSON教程 - JSON模式、JSON Java
  • FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持
  • 《安全基石:等保测评的全方位解读》
  • Zabbix proxy 主动模式的实现
  • 三周精通FastAPI:32 探索如何使用pytest进行高效、全面的项目测试!
  • 微前端应用+MicApp、无界、乾坤、EMP+简要了解+部分场景应用
  • Qt——常用控件