首页 > 其他分享 >添加区间到集合中,并计算出现在至少一个区间中的整数个数

添加区间到集合中,并计算出现在至少一个区间中的整数个数

时间:2024-03-22 14:35:56浏览次数:33  
标签:mut cnt right self 个数 添加 mp 区间 left

Leetcode题目:
不断地添加区间到区间集合中,并计算出现在至少一个区间中的整数个数。
使用BTreemap动态开区间。

use std::collections::BTreeMap;

struct CountIntervals {
    mp: BTreeMap<i32, i32>,
    cnt: i32,
}

impl CountIntervals {
    fn new() -> Self {
        CountIntervals {
            mp: BTreeMap::new(),
            cnt: 0,
        }
    }

    fn add(&mut self, mut left: i32, mut right: i32) {
        let mut interval_index = self.mp.range(..=right).next_back();

        while let Some((&l, &r)) = interval_index {
            if l > right || r < left {
                break;
            }

            left = left.min(l);
            right = right.max(r);

            self.cnt -= r - l + 1;
            self.mp.remove(&l);

            interval_index = self.mp.range(..=right).next_back();
        }

        self.cnt += right - left + 1;
        self.mp.insert(left, right);
    }

    fn count(&self) -> i32 {
        self.cnt
    }
}

标签:mut,cnt,right,self,个数,添加,mp,区间,left
From: https://www.cnblogs.com/mariocanfly/p/18089395

相关文章

  • 2605. 从两个数字数组里生成最小数字c
    intminNumber(int*nums1,intnums1Size,int*nums2,intnums2Size){intmin=INT_MAX;for(inti=0;i<nums1Size;i++){intsum=0;for(intj=0;j<nums2Size;j++){if(nums1[i]!=nums2[j]){if(nums1[i]>......
  • 尝试 `npm install @xxxxx` ,或者添加一个包含 `declare module ‘xxxxx‘;` 的新声明(.
    我们在vue3+ts的项目中,有时候安装插件,在导入文件使用的时候会出现上面的问题,这是因为插件库中并没有ts的.d.ts类型的声明文件,所以我们在导入使用的时候一直报警告,无法使用。要解决这个问题,根据他的提示有两种解决方案。方案一:根据提醒安装对应的ts类型插件即可。方案二:......
  • 每天一个数据分析题(二百二十五)
    ENN(EditedNearestNeighbors)方法是一种有效的处理类别不平衡问题时的方法,以下关于ENN算法的哪个描述是正确的?A.ENN主要移除多数类的样本B.ENN通过查找样本的最近邻居来判断是否移除它们C.ENN总是优先移除那些距离决策边界很远的样本D.ENN仅用于过采样题目来源于CD......
  • 每天一个数据分析题(二百二十六)
    当您使用网格搜索(GridSearch)进行超参数调优的时候,如果您有3个超参数,每个超参数有4个可能的值,进行5折交叉验证,那么您将训练多少次模型?A.60B.240C.320D.405题目来源于CDA模拟题库点击此处获取答案......
  • Jackson进行JSON序列化/反序列化添加Java 8的日期和时间库支持
     添加依赖包<!--Jackson进行JSON序列化/反序列化添加Java8的日期和时间库支持--> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.13.0</version> ......
  • 中传校赛:小红的独特区间
    原题链接:G-小红的独特区间题目大意:给定长度为n的数组,要求求出合法子数组方案数,合法的方案定义是:连续子数组恰好包含三种不同的数字。思路:先将相同的数字缩成同一个数字,然后对于每一个数字,求出满足合法的区间的长度再计算总和即可。#pragmaGCCoptimize(2)#include<bits/st......
  • AcWing 1230. K倍区间 C++满分题解
    原题链接https://www.acwing.com/problem/content/1232/题目分析求区间和,我们可以通过前缀和来求出。我们规定sum[i]表示第1个元素到第i个元素的和。那么sum[r]-sum[l-1]就是区间[l,r]的和。一维前缀和for(inti=1;i<=n;i++){scanf("%lld",&sum[i]);......
  • sql中如何添加数据
    在数据库操作中,添加数据是一个常见且重要的任务。本文将介绍如何在SQL中添加数据,包括基本语法、插入单条数据和多条数据的方法。一、基本语法在SQL中,添加数据主要使用`INSERTINTO`语句。其基本语法如下:INSERTINTO表名(列1,列2,...,列n)VALUES(值1,值2,...,值n);......
  • Windows 11 家庭中文版添加本地安全策略
    一、报错Windows11中打开本地组策略编辑器(cmd中输入gpedit.msc),报错:二、解决1、新建txt文件,文件名任意,将下面的内容复制粘贴进去。2、将文件后缀名由txt改为cmd。3、以管理员身份执行该cmd文件,安装本地安全策略相关文件,大概需要60s左右执行完成。4、cmd中输入gpedit.msc,本......
  • 如何在极狐GitLab Runner 添加信任缓存域名证书
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。问题参见:场景是极狐GitLabRunner添加MinIO域名host的时候却无法验证......