Rust 力扣 - 2461. 长度为 K 子数组中的最大和

文章目录

题目描述

题解思路

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

题解代码

rust 复制代码
use std::collections::{HashMap};

impl Solution {
    pub fn maximum_subarray_sum(nums: Vec<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() >= k 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() == k as usize {
                ans = ans.max(sum);
            }
        }

        ans
    }
}

题目链接

https://leetcode.cn/problems/maximum-sum-of-distinct-subarrays-with-length-k/description/

相关推荐
zeijiershuai5 分钟前
Java 会话技术、Cookie、JWT令牌、过滤器Filter、拦截器Interceptor
java·开发语言
q***74825 分钟前
Spring Boot环境配置
java·spring boot·后端
MATLAB代码顾问30 分钟前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
郝开33 分钟前
Spring Boot 2.7.18(最终 2.x 系列版本)3 - 枚举规范定义:定义基础枚举接口;定义枚举工具类;示例枚举
spring boot·后端·python·枚举·enum
q***74833 分钟前
Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目
spring boot·后端·spring
q***180634 分钟前
十八,Spring Boot 整合 MyBatis-Plus 的详细配置
spring boot·后端·mybatis
m0_736927041 小时前
2025高频Java后端场景题汇总(全年汇总版)
java·开发语言·经验分享·后端·面试·职场和发展·跳槽
掘金者阿豪1 小时前
“多余的”回车:从IDE的自动换行窥见软件工程的规范与协作
后端
FAREWELL000751 小时前
Lua学习记录(3) --- Lua中的复杂数据类型_table
开发语言·学习·lua
Felix_XXXXL1 小时前
Plugin ‘mysql_native_password‘ is not loaded`
java·后端