付費限定

系統設計: 動態取出數據流的最小值 Leetcode #2336_Leetcode 精選75題解析

閱讀時間約 8 分鐘

題目敘述

題目的情境是設計並且實現一個包含所有正整數的數據流,以set集合的方式存在。

數據流 = {1, 2, 3, 4, ..., }


要求我們去實現定義好的function介面:

SmallestInfiniteSet()建構子,初始化這個包含所有正整數的數據流

int popSmallest(),取出並且回傳數據流目前的最小值。

void addBack(int num),假如num目前不在數據流裡面,則插入一個數字num到數據流裡面。


題目的原文敘述


測試範例

Example 1:

Input
["SmallestInfiniteSet", "addBack", "popSmallest", "popSmallest", "popSmallest", "addBack", "popSmallest", "popSmallest", "popSmallest"]
[[], [2], [], [], [], [1], [], [], []]
Output
[null, null, 1, 2, 3, null, 1, 4, 5]

Explanation
SmallestInfiniteSet smallestInfiniteSet = new SmallestInfiniteSet();
smallestInfiniteSet.addBack(2); // 2 is already in the set, so no change is made.
smallestInfiniteSet.popSmallest(); // return 1, since 1 is the smallest number, and remove it from the set.
smallestInfiniteSet.popSmallest(); // return 2, and remove it from the set.
smallestInfiniteSet.popSmallest(); // return 3, and remove it from the set.
smallestInfiniteSet.addBack(1); // 1 is added back to the set.
smallestInfiniteSet.popSmallest(); // return 1, since 1 was added back to the set and
// is the smallest number, and remove it from the set.
smallestInfiniteSet.popSmallest(); // return 4, and remove it from the set.
smallestInfiniteSet.popSmallest(); // return 5, and remove it from the set.

約束條件

Constraints:

  • 1 <= num <= 1000

插入的新數字num數值會介於1~1000之間。

  • At most 1000 calls will be made in total to popSmallest and addBack.

動態測試時,最多會有1000次function call。


演算法

從題目的需求來尋找底層適合的資料結構data structure。


維護一個動態的數據流,而且又要支持取出最小值的操作。

聯想到優先權佇列 或者說 最小堆 minheap,python已經內建支援min heap最小推,實作在heapq這個 library裡面


插入新元素時,又要維持元素唯一沒有重複的性質,聯想到hash set 集合在python也已經內建支援set()


以行動支持創作者!付費即可解鎖
本篇內容共 3437 字、2 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
86會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
這題也是滿經典的DP動態規劃教學案例和題目,就順便複習一下吧。 題目敘述 題目會給我們兩個字串text1, text2。 要求我們找出兩個字串的最長共同子序列,並且返回最長共同子序列的長度。 如果彼此沒有共同子序列,則返回0。 題目的原文敘述 測試範例 Example 1: In
題目敘述 Dota2 的世界有兩個陣營:Radiant(天輝)和 Dire(夜魘) Dota2 元老院由兩派的元老組成。現在元老院希望對一個 Dota2 遊戲裡的改變作出決定。他們以一個回合制的過程的進行投票。在每一輪中,每一位元老都可以行使兩項權利中的一項: 禁止一名元老的權利:元老
題目敘述 題目給定我們一顆二元樹的根節點,要求我們計算出從根節點到葉子節點的偽回文路徑路徑有幾條? 偽回文路徑路徑 的定義: 路徑經過重新排列之後,可以形成回文Palindrome,也就是頭尾鏡像對稱。 ​ 例如: 1 -> 3 -> 3 重新排列之後,可以形成 3 -> 1 -> 3
題目敘述 題目會給定一個字串陣列arr最為輸入,我們可以任意選擇一組不包含重複字元的陣列子序列,將字串進行串接,成為字串s,請問字串s的最大長度是多少? 例如: arr=["dog","cow","cat"] 我們可以選擇"dog", "cat"進行串接,得到的字串s="dogcat",s的
題目敘述 題目會給定一個整數陣列nums,原本裡面包含有整數1到n,但是中間不小心出了差錯,導致有一個數字消失了,而另一個數字重複了。 請找出重複的數字以及消失的數字,並且 以陣列的形式[重複的數字, 消失的數字]返回這兩個數字。 例如: [1,3,3,4] 消失的數字是2,重複的數字是
這題也算是Leetcode 上經典的DP考題之一,也是很好的DP邏輯思考練習題。 題目敘述 題目會給我們一個nums陣列,分別代表每棟房屋的價值,也就是房屋內有的現金數量。 題目敘述給的情境是假想盜賊要偷東西,限制是相鄰的兩棟房屋不能一起偷,只能選擇其中一棟,否則就會觸發警報器。 請問怎麼選
這題也是滿經典的DP動態規劃教學案例和題目,就順便複習一下吧。 題目敘述 題目會給我們兩個字串text1, text2。 要求我們找出兩個字串的最長共同子序列,並且返回最長共同子序列的長度。 如果彼此沒有共同子序列,則返回0。 題目的原文敘述 測試範例 Example 1: In
題目敘述 Dota2 的世界有兩個陣營:Radiant(天輝)和 Dire(夜魘) Dota2 元老院由兩派的元老組成。現在元老院希望對一個 Dota2 遊戲裡的改變作出決定。他們以一個回合制的過程的進行投票。在每一輪中,每一位元老都可以行使兩項權利中的一項: 禁止一名元老的權利:元老
題目敘述 題目給定我們一顆二元樹的根節點,要求我們計算出從根節點到葉子節點的偽回文路徑路徑有幾條? 偽回文路徑路徑 的定義: 路徑經過重新排列之後,可以形成回文Palindrome,也就是頭尾鏡像對稱。 ​ 例如: 1 -> 3 -> 3 重新排列之後,可以形成 3 -> 1 -> 3
題目敘述 題目會給定一個字串陣列arr最為輸入,我們可以任意選擇一組不包含重複字元的陣列子序列,將字串進行串接,成為字串s,請問字串s的最大長度是多少? 例如: arr=["dog","cow","cat"] 我們可以選擇"dog", "cat"進行串接,得到的字串s="dogcat",s的
題目敘述 題目會給定一個整數陣列nums,原本裡面包含有整數1到n,但是中間不小心出了差錯,導致有一個數字消失了,而另一個數字重複了。 請找出重複的數字以及消失的數字,並且 以陣列的形式[重複的數字, 消失的數字]返回這兩個數字。 例如: [1,3,3,4] 消失的數字是2,重複的數字是
這題也算是Leetcode 上經典的DP考題之一,也是很好的DP邏輯思考練習題。 題目敘述 題目會給我們一個nums陣列,分別代表每棟房屋的價值,也就是房屋內有的現金數量。 題目敘述給的情境是假想盜賊要偷東西,限制是相鄰的兩棟房屋不能一起偷,只能選擇其中一棟,否則就會觸發警報器。 請問怎麼選
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
你是否跟我一樣,每到餐廳點餐,總是看最上面那一排, 因為那是菜單最便宜的價位。 會有這種想法通常都是因為「稀缺心理」所造成,因為太重視錢了, 所以為了省錢,所以認為自己只能吃最便宜的餐點, 人只要窮活也會塑造出「窮思想」。 這種情形也是落入了聖經馬太福音所提到的「馬太效應」, 貧
Thumbnail
School of Motion 是一個專門為動畫設計愛好者提供教育資源的公司,主要服務英語客群,他們提供許多線上課程,從入門到進階的專業級別,也涵蓋動態設計領域不同的主題,例如 After Effects、動畫表達式語法、插畫、視覺特效等等。School of Motion 的課程還提供了獨特的
Thumbnail
Brief 對英國人來說,是什麼塑造英國文化? 也許是佈滿草地的綿羊、與好友坐在公園長椅上,或是到當地的酒吧小酌等等。在創意部門 BBC Creative 與 英國設計公司 ManvsMachine 的合作之下,這些熟悉的場景,為英國廣播公司第一台 BBC One 的新識別注入了生命。
Thumbnail
How&How 是一間位於倫敦與葡萄牙里斯本的品牌設計 Agency,近期他們為 Freetree 重新塑造品牌,Freetree 是一個使用網路消費策略的植樹品牌(當顧客消費便替他們種樹),而 How&How 卻在過程中面臨了兩難。
Thumbnail
位於荷蘭的設計工作室 Studio Dumbar/DEPT® 日前宣布 Design in Motion Festival(DEMO) 的回歸。在這個2022年10月6號的動態設計節,各種動態藝術作品將會攻佔各大公共場域,而主辦方也鼓勵來自全球各地的創意工作者,遞交他們的動態設計作品並與其中展示。
Thumbnail
SpaceTypeGenerator 是由一位巴爾的摩的設計師兼教育家 Kiel D. Mutschelknaus 利用程式碼所創造的線上文字動態平台,讓你可以輕易地透過滑桿跟參數設定,在線上創造出豐富的文字動態。
Thumbnail
Spotifictional 奠基在音樂串流平台 Spotify 上,旨在蒐集電影與影集中數以千計的虛擬樂團、音樂創作人與虛擬的歌曲。
Thumbnail
F5 Empath 是由 Motionographer 不定期在紐約舉辦的動態設計節,旨在探索藝術、設計、與科技和三者之間的互動。
Thumbnail
前幾日在網路上非常火紅的一段影片,便是 Nike Air Max 的這個戶外 3D 投影,以誇張逼真的視覺與充滿未來感的動態效果,在各大社群平台上引起一陣熱議。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
你是否跟我一樣,每到餐廳點餐,總是看最上面那一排, 因為那是菜單最便宜的價位。 會有這種想法通常都是因為「稀缺心理」所造成,因為太重視錢了, 所以為了省錢,所以認為自己只能吃最便宜的餐點, 人只要窮活也會塑造出「窮思想」。 這種情形也是落入了聖經馬太福音所提到的「馬太效應」, 貧
Thumbnail
School of Motion 是一個專門為動畫設計愛好者提供教育資源的公司,主要服務英語客群,他們提供許多線上課程,從入門到進階的專業級別,也涵蓋動態設計領域不同的主題,例如 After Effects、動畫表達式語法、插畫、視覺特效等等。School of Motion 的課程還提供了獨特的
Thumbnail
Brief 對英國人來說,是什麼塑造英國文化? 也許是佈滿草地的綿羊、與好友坐在公園長椅上,或是到當地的酒吧小酌等等。在創意部門 BBC Creative 與 英國設計公司 ManvsMachine 的合作之下,這些熟悉的場景,為英國廣播公司第一台 BBC One 的新識別注入了生命。
Thumbnail
How&How 是一間位於倫敦與葡萄牙里斯本的品牌設計 Agency,近期他們為 Freetree 重新塑造品牌,Freetree 是一個使用網路消費策略的植樹品牌(當顧客消費便替他們種樹),而 How&How 卻在過程中面臨了兩難。
Thumbnail
位於荷蘭的設計工作室 Studio Dumbar/DEPT® 日前宣布 Design in Motion Festival(DEMO) 的回歸。在這個2022年10月6號的動態設計節,各種動態藝術作品將會攻佔各大公共場域,而主辦方也鼓勵來自全球各地的創意工作者,遞交他們的動態設計作品並與其中展示。
Thumbnail
SpaceTypeGenerator 是由一位巴爾的摩的設計師兼教育家 Kiel D. Mutschelknaus 利用程式碼所創造的線上文字動態平台,讓你可以輕易地透過滑桿跟參數設定,在線上創造出豐富的文字動態。
Thumbnail
Spotifictional 奠基在音樂串流平台 Spotify 上,旨在蒐集電影與影集中數以千計的虛擬樂團、音樂創作人與虛擬的歌曲。
Thumbnail
F5 Empath 是由 Motionographer 不定期在紐約舉辦的動態設計節,旨在探索藝術、設計、與科技和三者之間的互動。
Thumbnail
前幾日在網路上非常火紅的一段影片,便是 Nike Air Max 的這個戶外 3D 投影,以誇張逼真的視覺與充滿未來感的動態效果,在各大社群平台上引起一陣熱議。