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
英文地址,請注明出處:http://en.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的…