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

leetcode每日一题 -- 3362. 零数组变换 III

思路

题意是要找出[最少的区间]使nums数组变为零数组,并且使用的区间可以不连续

  • 我的第一想法是先给区间按照左边界排序(就像区间合并题的准备工作那样)
  • 这样的可以使用最大堆,每次将右区间值最大(也就是区间范围最大)的区间应用到差分数组中
  • 但是,后续如何处理还是不太会,遂看了题解,以下是以题解代码作出的思考

预处理思路是一样的,而后续的处理方式是以nums中每个数字为基准,完成一个核心逻辑后,就判断当前累加值是否能将当前数字清为0

核心逻辑:

贪心+大堆

以i为基准值,将queries以左区间值为标准分为多组,每次插入一组

  • 插入右区间值到大堆中,因为我们要先拿到范围最大的区间

记录一个累加值

  • 类似于之前初始化好差分数组后的计算前缀和
  • 后续使用区间时,也要+1 -- 相当于多了一个区间可以对当前位置操作(-1),而这里的+1就代表了传统差分数组中对左区间+1的操作

接下来就是将有效区间应用到差分数组中,并且处理右区间

  • 有效区间 -- 因为有可能在上个步骤中剩余了区间,导致右区间 < 此时的i
  • 当使用完一个区间后,就把它出队,最终还在大堆中的就是未使用的区间(删除的区间)

代码

class Solution {
public:int maxRemoval(vector<int>& nums, vector<vector<int>>& queries) {// 最先找到范围大的区间(比较右边界),左边界可以从0开始遍历sort(queries.begin(), queries.end(),[](const vector<int>& x, const vector<int>& y) {return x[0] < y[0];});int n = nums.size();vector<int> delt_arr(n + 1, 0);int op_num = 0;priority_queue<int> heap; // 默认大堆// 比较当前每一位数字是否可以被减为0for (int i = 0, j = 0; i < nums.size(); ++i) {// 累加出当前可以被操作的值op_num += delt_arr[i];// 每次加入左区间为i的数组while (j < queries.size() && queries[j][0] == i) {heap.push(queries[j][1]);++j;}// 经大堆排序后,初始化到差分数组中(注意,这里插入的要是有效区间)while (op_num < nums[i] && heap.size() > 0 && heap.top() >= i) {// 有一个新区间覆盖到当前位置op_num++;delt_arr[heap.top() + 1]--;heap.pop();}// 所有覆盖到该位的区间都已操作完if (op_num < nums[i]) {return -1;}}return heap.size();}
};

http://www.dtcms.com/a/207173.html

相关文章:

  • PyQt学习系列01-框架概述与基础环境搭建
  • memcpy 函数的使用 (C语言)
  • 【SpringBoot实战指南】使用 Spring Cache
  • 通义灵码 2.5 版深度评测:智能编程的边界在哪里?
  • C# 项目
  • 【工具】Quicker/VBA|PPT 在指定位置添加参考线
  • Elasticsearch 分页查询的 from+size 有什么缺陷?如何优化深度分页?比较scroll API与search_after的差异
  • session、cookie或者jwt 解释一下
  • docker 启动一个python环境的项目dockerfile版本
  • HarmonyOS 鸿蒙应用开发基础:@Watch装饰器详解及与@Monitor装饰器对比分析
  • Android 添加系统服务的完整流程
  • 第十三章 watchdog组件配置
  • 广东省省考备考(第十七天5.22)—申论认识
  • 2025软考高级信息系统项目管理师英文选择题---技术类常见英语词汇
  • 鲲鹏+昇腾Atlas800IA2(910B4)部署Qwen3-32B【简单自用版】
  • CLIP阅读笔记
  • 冒险岛(MapleStory) 083脚本教程
  • Web前端开发 - 制作简单的焦点图效果
  • 你通俗易懂的理解——线程、多线程与线程池
  • strlen和sizeof,const char *、char * const 和char []区别
  • Web安全与漏洞挖掘
  • 常见高危端口解析:网络安全中的“危险入口”
  • 网络安全-等级保护(等保) 3-1 GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》-2019-05-10发布【现行】
  • 01-jenkins学习之旅-window-下载-安装
  • OceanBase数据库全面指南(基础入门篇)
  • Django的请求和响应+template模板
  • 软件设计师“设计原则”真题考点分析——求三连
  • 重排序模型计算两个文本的分数
  • VS Code中Maven未能正确读取`settings.xml`中配置的新路径
  • 超声仿真乳腺体模的主要声学参数