2023-12-16 LeetCode每日一题(统计区间中的整数数目)

2023-12-16每日一题

一、题目编号

2276. 统计区间中的整数数目

二、题目链接

点击跳转到题目位置

三、题目描述

给你区间的 集,请你设计并实现满足要求的数据结构:

**新增:**添加一个区间到这个区间集合中。
**统计:**计算出现在 至少一个 区间中的整数个数。
实现 CountIntervals 类:

CountIntervals() 使用区间的空集初始化对象
void add(int left, int right) 添加区间 [left, right] 到区间集合之中。
int count() 返回出现在 至少一个 区间中的整数个数。
**注意:**区间 [left, right] 表示满足 left <= x <= right 的所有整数 x 。

示例 1:
在这里插入图片描述
提示:

  • 1 <= left <= right <= 109
  • 最多调用 add 和 count 方法 总计 105
  • 调用 count 方法至少一次

四、解题代码

class CountIntervals {
public:CountIntervals() {}void add(int left, int right) {auto interval = mp.upper_bound(right);if (interval != mp.begin()) {interval--;}while (interval != mp.end() && interval->first <= right && interval->second >= left) {int l = interval->first, r = interval->second;left = min(left, l);right = max(right, r);cnt -= r - l + 1;mp.erase(interval);interval = mp.upper_bound(right);if (interval != mp.begin()) {interval--;}}cnt += (right - left + 1);mp[left] = right;}int count() {return cnt;}
private:int cnt = 0;map<int, int> mp;
};

五、解题思路

(1) 平衡二叉搜索树

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

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

相关文章

从零开始做题:逆向wdb_2018_3rd_soEasy

1.题目信息 2.解题原理 使用kali2023环境&#xff0c;具体见从零开始配置kali2023环境&#xff1a;安装最新免费IDA版本8.3-CSDN博客 giantbranchubuntu:~/Re/2$ checksec ./wdb_2018_3rd_soEasy [*] /home/giantbranch/Re/2/wdb_2018_3rd_soEasyArch: i386-32-littleREL…

如何通过使用说明书的优化降低售后支持成本?

随着市场竞争的加剧&#xff0c;售后服务已成为企业保持竞争优势的关键因素之一。而使用说明书作为产品的重要组成部分&#xff0c;与售后服务之间存在着密切的关系。接下来就探讨一下如何通过优化使用说明书降低售后支持成本&#xff0c;提升售后服务质量。 一、使用说明书对售…

PAT乙级1045 快速排序

著名的快速排序算法里有一个经典的划分过程&#xff1a;我们通常采用某种方法取一个元素作为主元&#xff0c;通过交换&#xff0c;把比主元小的元素放到它的左边&#xff0c;比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列&#xff0c;请问有多少个元…

SpringBoot + Vue 抖音全平台项目

简介 本项目是一个短视频平台&#xff0c;拥有热度排行榜&#xff0c;热门视频&#xff0c;兴趣推送&#xff0c;关注推送&#xff0c;内容审核等功能。 源码下载 网盘 (访问密码: 8418) 登录/注册 首页 创作中心 架构设计 上传视频业务流程 视频推送流程 1.用户订阅分类后…

C#中string.ToUpper()和string.ToLower()的用法

目录 一、关于ToUpper()和ToLower() 1.ToUpper() 2.ToLower() 3.小结 二、实例 三、生成效果 一、关于ToUpper()和ToLower() 1.ToUpper() 使用字符串对象的ToUpper方法可以将字符串中的字母全部转换为大写。 string P_str_book "mingribook".ToUpper()…

redis 从0到1完整学习 (十四):RedisObject 之 ZSet 类型

文章目录 1. 引言2. redis 源码下载3. redisObject 管理 ZSet 类型的数据结构4. 参考 1. 引言 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&#xff1a;安装&初识 redis》 《redis 从0到1完整学习 &#xff08;二&#xff09;&#xff1a;re…

Python开发环境[PycharmEclipseAnaconda]

Pycharm配置Python开发环境 每种语言的开发工具都有很多&#xff0c;如果写一些小的脚本或者小的工具&#xff0c;建议直接使用命令行或者Python自带的IDLE&#xff0c;如果进行大型的开发工作建议使用Pycharm&#xff0c;当然这属于个人喜好。 虽然Pycharm给了我们一个美观的…

K8s实战入门

1.NameSpace Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下&#xff0c;kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中&#xff0c;可能不想让两个Pod之间进行互相…

Iterator(迭代器) 和 list

Iterator&#xff08;迭代器&#xff09; 和 list 文章目录 一、Iterator&#xff08;迭代器&#xff09;二、list 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、Iterator&#xff08;迭代器&#xff09; 对 collection 进行迭代的迭代器。迭代器…

【Unity入门】UGUI之Slider(滑动条)

目录 一、什么是Slider&#xff1f;二、Slider属性与功能 一、什么是Slider&#xff1f; Slider控件允许用户可以通过鼠标来在预先确定的范围调节数值 我们可以在Hierarchy视图右键 -> UI ->Slider来创建滑动条 通过上图可以发现Unity内置的Slider主要有3部分&#x…

互斥锁-第二十七天

互斥锁 定义&#xff1a;解决临界区最简单的工具&#xff08;一个进程在进入临界区时应获得锁&#xff1b;在退出临界区时释放锁。函数acquire()获得锁&#xff0c;release()释放锁&#xff09; 注意事项&#xff1a;acquire()或release()的执行必须是原子操作&#xff0c;因…

createElement, parentNode, removeChild, appendChild

1获取父节点 var childNode document.getElementById("child"); var parentNode childNode.parentNode; // 获取父节点利用dom获取元素要嵌套 引出&#xff1a;利用父子兄节点关系获取元素 标签&#xff0c;元素&#xff0c;元素节点空格&#xff0c;文本节点属性…