352. 將數據流變為多個不相交區間

352. 將數據流變為多個不相交區間

給你一個由非負整數 a1, a2, …, an 組成的數據流輸入,請你將到目前為止看到的數字總結為不相交的區間列表。

實現 SummaryRanges 類:

  • SummaryRanges() 使用一個空數據流初始化對象。
  • void addNum(int val) 向數據流中加入整數 val 。
  • int[][] getIntervals() 以不相交區間 [starti, endi] 的列表形式返回對數據流中整數的總結。
示例:輸入:
["SummaryRanges", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals"]
[[], [1], [], [3], [], [7], [], [2], [], [6], []]
輸出:
[null, null, [[1, 1]], null, [[1, 1], [3, 3]], null, [[1, 1], [3, 3], [7, 7]], null, [[1, 3], [7, 7]], null, [[1, 3], [6, 7]]]解釋:
SummaryRanges summaryRanges = new SummaryRanges();
summaryRanges.addNum(1);      // arr = [1]
summaryRanges.getIntervals(); // 返回 [[1, 1]]
summaryRanges.addNum(3);      // arr = [1, 3]
summaryRanges.getIntervals(); // 返回 [[1, 1], [3, 3]]
summaryRanges.addNum(7);      // arr = [1, 3, 7]
summaryRanges.getIntervals(); // 返回 [[1, 1], [3, 3], [7, 7]]
summaryRanges.addNum(2);      // arr = [1, 2, 3, 7]
summaryRanges.getIntervals(); // 返回 [[1, 3], [7, 7]]
summaryRanges.addNum(6);      // arr = [1, 2, 3, 6, 7]
summaryRanges.getIntervals(); // 返回 [[1, 3], [6, 7]]

解題思路

使用優先隊列維護有序的數據流,當需要獲得不相交的區間時,我們可以遍歷優先隊列,判斷有序的數據流可以組成的不相交區間

代碼

    class SummaryRanges {PriorityQueue<Integer> pq = new PriorityQueue<>();public SummaryRanges() {}public void addNum(int val) {pq.add(val);}public int[][] getIntervals() {int pre = pq.poll(), s = pre;List<int[]> list = new ArrayList<>();while (!pq.isEmpty()) {Integer cur = pq.poll();if (cur==pre) continue;if (cur == pre + 1) {pre++;} else {list.add(new int[]{s,pre});s=pre=cur;}}list.add(new int[]{s,pre});int j=0;int[][] res=new int[list.size()][2];for (int[] ints : list) {for (int i=ints[0];i<=ints[1];i++)pq.add(i);res[j++]=ints;}return res;}}/*** Your SummaryRanges object will be instantiated and called as such:* SummaryRanges obj = new SummaryRanges();* obj.addNum(val);* int[][] param_2 = obj.getIntervals();*/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389999.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java常用的八種排序算法與代碼實現

排序問題一直是程序員工作與面試的重點&#xff0c;今天特意整理研究下與大家共勉&#xff01;這里列出8種常見的經典排序&#xff0c;基本涵蓋了所有的排序算法。 1.直接插入排序 我們經常會到這樣一類排序問題&#xff1a;把新的數據插入到已經排好的數據列中。將第一個數和第…

熊貓ai智能機器人量化_機器學習中的熊貓是什么

熊貓ai智能機器人量化Machine learning is a complex discipline. The implementation of machine learning models is now far much easier than it used to be, this is as a result of Machine learning frameworks such as pandas. Wait!! isnt panda an animal? As I rec…

441. 排列硬幣

441. 排列硬幣 你總共有 n 枚硬幣&#xff0c;并計劃將它們按階梯狀排列。對于一個由 k 行組成的階梯&#xff0c;其第 i 行必須正好有 i 枚硬幣。階梯的最后一行 可能 是不完整的。 給你一個數字 n &#xff0c;計算并返回可形成 完整階梯行 的總行數。 示例 1&#xff1a;…

調用百度 Echarts 顯示重慶市地圖

因為 Echarts 官方不再提供地圖數據的下載&#xff0c;在這里保存一份&#xff0c;供日后使用&#xff0c;重慶地圖數據的 JSON 文件在 CSDN 上下載。 <!DOCTYPE html> <html style"height: 100%"><head><meta charset"utf-8"><…

JEESZ-SSO解決方案

2019獨角獸企業重金招聘Python工程師標準>>> 第一節&#xff1a;單點登錄簡介 第一步&#xff1a;了解單點登錄 SSO主要特點是: SSO應用之間使用Web協議(如HTTPS)&#xff0c;并且只有一個登錄入口. SSO的體系中有下面三種角色: 1) User(多個) 2) Web應用(多個) 3) …

女朋友天天氣我怎么辦_關于我的天氣很奇怪

女朋友天天氣我怎么辦帶有扭曲的天氣應用 (A Weather App with a Twist) Is My Weather Weird?? is a weather app with a twist — it offers a simple answer to a common question we’ve all asked. To do this we look at how often weather like today’s used to happ…

Java中length,length(),size()的區別

&#xff08;一&#xff09;區別&#xff1a; ①length&#xff1a;用于算出數組的長度。 ②length&#xff08;&#xff09;&#xff1a;用于找出字符串的長度。 ③size&#xff08;&#xff09;&#xff1a;用于找出泛型集合的元素個數。轉載于:https://www.cnblogs.com/not-…

5895. 獲取單值網格的最小操作數

5895. 獲取單值網格的最小操作數 給你一支股票價格的數據流。數據流中每一條記錄包含一個 時間戳 和該時間點股票對應的 價格 。 不巧的是&#xff0c;由于股票市場內在的波動性&#xff0c;股票價格記錄可能不是按時間順序到來的。某些情況下&#xff0c;有的記錄可能是錯的…

為什么要用Redis

最近閱讀了《Redis開發與運維》&#xff0c;非常不錯。這里對書中的知識整理一下&#xff0c;方便自己回顧一下Redis的整個體系&#xff0c;來對相關知識點查漏補缺。我按照五點把書中的內容進行一下整理&#xff1a;為什么要選擇Redis&#xff1a;介紹Redis的使用場景與使用Re…

第一次馬拉松_成為數據科學家是一場馬拉松而不是短跑

第一次馬拉松Since Data Science became the “Sexiest Job of the 21st Century” the interest in the field has grown tremendously. With it so have the courses available to gain the necessary knowledge. As great as this is, the downside is a field marketed as …

273. 整數轉換英文表示

273. 整數轉換英文表示 將非負整數 num 轉換為其對應的英文表示。 示例 1&#xff1a;輸入&#xff1a;num 123 輸出&#xff1a;"One Hundred Twenty Three" 示例 2&#xff1a;輸入&#xff1a;num 12345 輸出&#xff1a;"Twelve Thousand Three Hundred…

Java-運算符

算術運算符 加法 相加運算符兩側的值- 減法 左操作數減去右操作數* 乘法 相乘操作符兩側的值/ 除法 左操作數除以右操作數&#xff08;int類型的數相除時&#xff0c;會得到int類型的值&#xff0c;如果結果有小數&#xff0c;則小數部分會被舍棄&#xff09;% 模余運算&…

區塊鏈開發公司談區塊鏈在商業上的應用

對于近期正受科技界和資本市場關注的區塊鏈行業&#xff0c;一句話概括說如果互聯網技術解決的是通訊問題的話&#xff0c;區塊鏈技術解決的是信任問題&#xff0c;其在商業領域應用如何呢&#xff1f;我們來從兩個方面去進行剖析。 第一方面&#xff0c;區塊鏈技術可以解決基礎…

ORACLE1.21 PLSQL 01

-- 有了SQL 為什么還需要PL/SQL -- SQL功能很強大&#xff0c;但如果是單1sql語句&#xff0c;沒有流程控制 -- PL/SQL 是什么&#xff1f; --不僅僅實現流程控制&#xff0c;同時保留SQL本身所有的功能 --還提供變量、常量等支持 --提供更多數據類型的支持 --第一&#xff0c;…

云原生數據庫_數據標簽競賽云原生地理空間沖刺

云原生數據庫STAC specification is getting closer to the ver 1.0 milestone, and as such the first virtual Cloud Native Geospatial Sprint is being organized next week. An outreach day is planned on Sep 8th with a series of talks and tutorials for everyone. R…

Linux 下的 hosts文件

2019獨角獸企業重金招聘Python工程師標準>>> hosts 文件 目錄在 /etc/hosts netstat -ntlp //linux 下查看端口 轉載于:https://my.oschina.net/u/2494575/blog/1923074

412. Fizz Buzz

412. Fizz Buzz 給你一個整數 n &#xff0c;找出從 1 到 n 各個整數的 Fizz Buzz 表示&#xff0c;并用字符串數組 answer&#xff08;下標從 1 開始&#xff09;返回結果&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 同時是 3 和 5 的倍數。answer[i] “…

DjangoORM字段介紹

轉載于:https://www.cnblogs.com/cansun/p/8647371.html

黑客獨角獸_雙獨角獸

黑客獨角獸Preface前言 Last week my friend and colleague Srivastan Srivsan’s note on LinkedIn about Mathematics and Data Science opened an excellent discussion. Well, it is not something new; there were debates in the tech domain such as vim v.s emacs to …

38. 外觀數列

38. 外觀數列 給定一個正整數 n &#xff0c;輸出外觀數列的第 n 項。 「外觀數列」是一個整數序列&#xff0c;從數字 1 開始&#xff0c;序列中的每一項都是對前一項的描述。 你可以將其視作是由遞歸公式定義的數字字符串序列&#xff1a; countAndSay(1) “1”countAnd…