LeetCode 632.最小区间

你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。

我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。

示例 1:

输入:nums = [[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]
输出:[20,24]
解释:
列表 1:[4, 10, 15, 24, 26],24 在区间 [20,24] 中。
列表 2:[0, 9, 12, 20],20 在区间 [20,24] 中。
列表 3:[5, 18, 22, 30],22 在区间 [20,24] 中。
示例 2:

输入:nums = [[1,2,3],[1,2,3],[1,2,3]]
输出:[1,1]

提示:

nums.length == k
1 <= k <= 3500
1 <= nums[i].length <= 50
-10 5 ^5 5 <= nums[i][j] <= 10 5 ^5 5
nums[i] 按非递减顺序排列

滑动窗口,滑窗区间是所有输入数列中的最小值到最大值,窗口内包含来自所有数列的值时即找到了一个符合题意的区间,维护最小区间即可:

class Solution {
public:vector<int> smallestRange(vector<vector<int>>& nums) {unordered_map<int, unordered_set<int>> numPos;int minNum = numeric_limits<int>::max();int maxNum = 0;for (int i = 0; i < nums.size(); ++i) {minNum = min(minNum, nums[i][0]);maxNum = max(maxNum, nums[i][nums[i].size() - 1]);for (int j = 0; j < nums[i].size(); ++j) {numPos[nums[i][j]].insert(i);}}unordered_map<int, int> freq;int validListNum = 0;int left = minNum;int ansBegin = 0;int ansLen = numeric_limits<int>::max();for (int i = minNum; i <= maxNum; ++i) {for (int pos : numPos[i]) {if (++freq[pos] == 1) {++validListNum;}}while (validListNum == nums.size()) {if (i - left + 1 < ansLen) {ansBegin = left;ansLen = i - left + 1;}for (int pos : numPos[left]) {if (--freq[pos] == 0) {--validListNum;}}++left;}}vector<int> ans = {ansBegin, ansBegin + ansLen - 1};return ans;}
};

如果每个数列的平均长度为n,数列中的数字范围为m,则此算法时间复杂度为O(nk + m),空间复杂度为O(nk)。

以上代码中,从最小值一直循环到了最大值,如果范围很大,但列表中的数字数量很小,会很耗时,因此可以把每个数字及其出现位置组成一个pair,然后放到一个vector里,这样遍历vector里的数字就可以了。

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

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

相关文章

篇章五 系统性能优化——资源优化——CPU优化(2)

目录 1.高级并发模式 1.1 工作窃取&#xff08;Work Stealing&#xff09; 1.工作窃取模式 2.ForkJoinPool实现 3.具体例子 1.2 结构化并发&#xff08;Structured Concurrency&#xff09; 1.结构化并发模式 2.Java 19 的 StructuredTaskScope 3.具体例子 1.3 对比与…

《中国电信运营商骨干网:历史、现状与未来演进》系列 第四篇:后发先至——中国移动CMNET的快速扩张与IP专网布局

摘要&#xff1a; 本文深入探讨中国移动骨干网CMNET (AS9808) 的发展历程、网络架构及其与中国电信扁平化策略的差异。同时&#xff0c;解析其为承载高价值业务而构建的IP专用承载网的定位、结构与技术特点。最后&#xff0c;展望中国移动在5G、云计算和算力网络时代&#xff0…

R情感分析:解码文本中的情感

基于之前关于文本聚类和文本模型的博客&#xff0c;我们现在可以深入探讨一个经典主题 - 情感分析。情感分析通过计算方式识别和分类文本中的情感&#xff0c;帮助理解公众意见或消费者反馈。 什么是情感分析&#xff1f; 情感分析确定文本背后的情感基调&#xff0c;将其分类…

云徙渠道订货系统:赋能企业渠道管理的数字化引擎

在当今商业竞争日益激烈的环境下&#xff0c;企业如何高效管理和优化渠道成为关键问题。云徙渠道订货系统凭借其强大的数字化能力&#xff0c;为企业提供了全新的渠道管理解决方案&#xff0c;助力企业在复杂多变的市场环境中保持竞争力。 从渠道管理的痛点出发 传统渠道管理方…

Nacos基础使用(二):nacos作为配置中心

一、Nacos 配置中心核心属性 在学习nacos 作为配置中心的使用之前&#xff0c;先看下Nacos 作为配置中心时的三个属性&#xff0c;即&#xff1a; 命名空间、配置分组、配置集ID&#xff08;习惯称为配置文件ID&#xff09;&#xff1b;在使用Nacos 作为配置中心 的过程中可以通…

SpringBoot 插件化架构的4种实现方案

在复杂业务场景下&#xff0c;传统的单体应用架构往往面临着功能扩展困难、代码耦合严重、迭代效率低下等问题。 插件化架构作为一种模块化设计思想的延伸&#xff0c;能够使系统具备更好的扩展性和灵活性&#xff0c;实现"热插拔"式的功能扩展。 本文将介绍Spring…

VGG-19(Visual Geometry Group)模型

VGG-19 是由牛津大学视觉几何组和 Google DeepMind 的研究人员在 2014 年提出的一个非常经典的深度卷积神经网络模型。 一 核心结构 &#xff08;1&#xff09;深度&#xff1a; 模型名称中的 "19" 指的是模型拥有 19 层带有权重的层&#xff08;通常指&#xff1a;…

Windows11 鼠标卡死任务栏卡死 假死解决方法

最近很多朋友都有一个问题&#xff0c;就是Windows11电脑 在编辑文档或者是切换窗口的时候出现任务栏假死&#xff0c;鼠标左右键失灵等现象&#xff0c;想了几天解决方案今天吧最直接的方法教给大家 首发玖毅论坛 玖毅论坛https://www.webbbs.cn/ 第一步&#xff1a; 第一种…

BeikeShop - 一个开源、用户友好的跨境电子商务平台

BeikeShop - 一个开源、用户友好的跨境电子商务平台 BeikeShop 是全球领先的基于 Laravel 框架的开源电子商务平台&#xff0c;专为国际贸易和跨境电子商务行业设计。 该系统是 100% 开源的&#xff01;它支持多语言、多币种、支付、物流、会员管理等广泛的实用功能&#xff0…

基于大模型的胆囊结石全周期诊疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与目标 1.3 研究方法与创新点 二、大模型预测胆囊结石的原理与技术基础 2.1 大模型概述 2.2 用于胆囊结石预测的数据来源 2.3 模型构建与训练 2.4 模型评估指标 三、术前风险预测与手术方案制定 3.1 术前评估指标与数…

[论文阅读] 人工智能 | Gen-n-Val:利用代理技术革新计算机视觉数据生成

Gen-n-Val&#xff1a;利用代理技术革新计算机视觉数据生成 论文信息 article{huang2025gennval,title{Gen-n-Val: Agentic Image Data Generation and Validation},author{Huang, Jing-En and Fang, I-Sheng and Huang, Tzuhsuan and Wang, Chih-Yu and Chen, Jun-Cheng},jo…

【AI论文】ReasonMed:一个370K的多智能体生成数据集,用于推进医疗推理

摘要&#xff1a;尽管基于推理的大型语言模型&#xff08;LLM&#xff09;在数学和编程方面表现出色&#xff0c;但它们在知识密集型医疗问题回答方面的能力仍未得到充分探索。为解决这一问题&#xff0c;我们推出了ReasonMed&#xff0c;这是最大的医疗推理数据集&#xff0c;…

singlefligt使用方法和源码解读

singlefligt使用方法和源码解读 介绍 sync.once保证其整个生命周期内只调用一次&#xff1b;而singleflight则可以保证在一定范围内其只调用一次。 背景|使用场景 应对缓存击穿&#xff1a;加锁可以解决这个问题&#xff0c;但是加锁不太灵活&#xff08;不能控制访问频率之…

HTTP 协议的基本概念(请求/响应流程、状态码、Header、方法)问题解决方案大全

HTTP 协议的基本概念&#xff08;请求/响应流程、状态码、Header、方法&#xff09;问题解决方案大全 一. 摘要 HTTP 协议是 Web 开发的基石&#xff0c;但初学者往往只停留在 GET、POST 的层面&#xff0c;对重定向机制、缓存控制、请求体解析等概念缺乏深入理解&#xff0c;…

Python中常用的函数

以下是Python中常用的函数分类整理&#xff0c;涵盖基础操作、数据处理、文件操作、面向对象等场景&#xff0c;并附上示例说明&#xff1a; --- ### **一、基础内置函数** | 函数 | 作用 | 示例 | |----…

【Windows】删除鼠标右键多余菜单的方法

要删除鼠标右键菜单中的多余菜单&#xff0c;如&#xff1a;“打开抖音壁纸”选项&#xff0c;通常需要通过修改注册表或使用第三方工具来清理残留的注册表项。以下是详细步骤&#xff08;操作注册表前务必备份&#xff01;&#xff09;&#xff1a; 方法一&#xff1a;通过注册…

【性能优化】启用zram

性能优化 系统内存不足时&#xff0c;可以考虑启动ZRAM功能&#xff08;压缩内存&#xff09;。关于ZRAM的概念&#xff0c;可自行学习。这里记录一下&#xff0c;启用ZRAM的方式。 启用ZRAM&#xff0c;可能会导致CPU升高&#xff0c;以及低内存时的恶性循环。是否启用需要综…

深度解析YOLOv8:CSPHet卷积结构如何实现极致轻量化

文章目录 一、背景介绍1.1 YOLOv8的现状1.2 降参数的必要性 二、相关技术介绍2.1 Dual思想2.2 HetConv 三、CSPHet结构设计3.1 CSP模块的改进3.2 结合HetConv3.3 参数量的下降 四、CSPHet的代码实现五、实验结果六、总结与展望 在目标检测领域&#xff0c;YOLO系列算法一直以其…

适配器模式demo

#include <QCoreApplication> #include <iostream>using namespace std;class XmCom { public:void ComByXm(){cout << "XM电源适配器只适用于小米笔记本电脑" << endl;} };class LxCom { public:virtual void ComByLx() 0;virtual ~LxCom…

数据处理考核要求-SQL测试的答案

在一个团队中&#xff0c;有业务人员。如业务人员深入理解数据处理的内容&#xff0c;会大幅度增强相互配合的效率。 针对业务人员进行针对性培训&#xff0c;还是比较容易掌握SQL的数据处理。类似与大学里面开的一门选修课。数据集选择帆软的Demo数据集。 业务人员学会SQL的…