首页 > 其他分享 >leetcode 2841. 几乎唯一子数组的最大和

leetcode 2841. 几乎唯一子数组的最大和

时间:2024-12-02 15:56:33浏览次数:9  
标签:resMax nums int long 2841 数组 now leetcode numAdded

2841. 几乎唯一子数组的最大和

使用unordered_map;unordered_multiset可能也可以,但是不如前者方便

class Solution {
public:
    long long maxSum(vector<int>& nums, int m, int k) {
        int size = nums.size();
        long long now = 0;
        unordered_map<int,int> numAdded;
        for(int i = 0;i < k;i++){
            now += nums[i];
            numAdded[nums[i]]++;//如果原本没有这个键,那么就会添加,对应的值自增1
        }
        long long resMax = 0;//题目说了,如果不存在几乎唯一子数组,请返回0
        if(numAdded.size() >= m)  resMax = now;  

        for(int i = k;i < size;i++){
            if(numAdded[nums[i-k]] == 1)  numAdded.erase(nums[i-k]);//如果将要移出的元素在原本的unordered_map只剩下一个,直接从unordered_map中删除
            else  numAdded[nums[i-k]]--;
            now = now - nums[i-k] + nums[i];
            numAdded[nums[i]]++;
            if(numAdded.size() >= m && now > resMax)  resMax = now;
        }
        
        return resMax;
    }
};

 

标签:resMax,nums,int,long,2841,数组,now,leetcode,numAdded
From: https://www.cnblogs.com/uacs2024/p/18582028

相关文章

  • LeetCode 爬楼梯
    题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?采用动态规划的算计进行设计对于n=1 的情况,很明显只有一种方法能爬到第1阶楼梯,那就是一次爬1个台阶,所以f(1)=1。对于 n=2  的情况,有两种方......
  • leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串
    1461.检查一个字符串是否包含所有长度为K的二进制子串 法一:使用unordered_set,通过集合数量来判断classSolution{public:boolhasAllCodes(strings,intk){intsize=s.size();intk_2kFang=pow(2,k);if(size-k+1<k_2kFa......
  • Leetcode:3195
    1,题目2,思路首先找到上下左右初始边就开始循环找到上下左右最终边,做面积运算就好了(其中+1是因为下标比实际位置少1)3,代码classSolution3195{publicintminimumArea(int[][]grid){intabove=0;//上intunder=0;//下intleft=0;//......
  • FORTRAN动态数组分配失败导致运行时Access Violation
    上周写了个程序,大致结构是主程序调用多个模块中的例程。声明了一个动态数组,期望实现的功能是通过子程序读取文件数据,写入数组,然后通过该数组传出。该数组在主程序中声明如下:real(8),allocatable::array(:)在例程中声明如下:real(8),allocatable,intent(out)::array(:)由于......
  • LeetCode题练习与总结:路径总和 Ⅲ --437
    一、题目描述给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例1:输入:root=[10,5,-3,3,2,null,......
  • LeetCode题练习与总结:找到字符串中所有字母异位词--438
    一、题目描述给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。示例 1:输入:s="cbaebabacd",p="abc"输出:[0,6]解释:起始索引等于0的子串是"cba",它是"abc"的异位词。起始索引等于6的子......
  • 二级 数组统计法
    目录缺失的数子夏令营小旗手选班委求N个整数的平均数、众数和中位数数字出现次数找筷子声音识别去除重复数字求n个数中每个数出现的次数数字出现次数COUNT求n个数中出现次数最多的数COUNT题目描述一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少......
  • LeetCode【0265】粉刷房子 II
    本文目录1中文题目2Python求解2.1求解思路2.2涉及方法2.3求解示例2.4Python代码2.5复杂度分析3题目总结1中文题目假如有一排房子共有n幢,每个房子可以被粉刷成k种颜色中的一种。房子粉刷成不同颜色的花费成本也是不同的。需要粉刷所有的房子并且使其相......
  • 2024-12-01:单面值组合的第 K 小金额。用go语言,给定一个整数数组 coins,表示不同面值的
    2024-12-01:单面值组合的第K小金额。用go语言,给定一个整数数组coins,表示不同面值的硬币,同时给出一个整数k。你可以使用任意数量的这些硬币,但不能将不同面值的硬币组合在一起。请返回可以用这些硬币构成的第k个最小金额。1<=coins.length<=15。1<=coins[i]<=2......
  • 108. 将有序数组转换为二叉搜索树
    问题描述给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵平衡二叉搜索树。分析二叉查找树BinarySearchTree,又叫:二叉搜索树,二叉排序树,其中序遍历是升序的,因此本题等同于根据中序遍历的序列恢复二叉搜索树与二分有区别,二分是不断查找答案所在区域的中间值......