付費限定

用最少的弓箭射穿所有氣球 Min of Arrow to Burst Balloon_Leetcode #452精選75

更新於 發佈於 閱讀時間約 6 分鐘

題目敘述

題目會給定一個輸入陣列points,陣列元素都是一組pair,

points[i] = [starti, endi],分別代表每顆氣球的左邊界,和右邊界。

假設弓箭射出去後,動能不會減弱,沿路上的氣球都會被射穿。

請問最少需要幾隻弓箭,才可以射穿所有氣球?


題目的原文敘述


測試範例

Example 1:

Input: points = [[10,16],[2,8],[1,6],[7,12]]
Output: 2
Explanation: The balloons can be burst by 2 arrows:
- Shoot an arrow at x = 6, bursting the balloons [2,8] and [1,6].
- Shoot an arrow at x = 11, bursting the balloons [10,16] and [7,12].

Example 2:

Input: points = [[1,2],[3,4],[5,6],[7,8]]
Output: 4
Explanation: One arrow needs to be shot for each balloon for a total of 4 arrows.

Example 3:

Input: points = [[1,2],[2,3],[3,4],[4,5]]
Output: 2
Explanation: The balloons can be burst by 2 arrows:
- Shoot an arrow at x = 2, bursting the balloons [1,2] and [2,3].
- Shoot an arrow at x = 4, bursting the balloons [3,4] and [4,5].

約束條件

Constraints:

  • 1 <= points.length <= 10^5

輸入陣列長度介於1~十萬之間。

  • points[i].length == 2

每個陣列元素都是一組Pair

  • -2^31 <= xstart < xend <= 2^31 - 1

每顆氣球的左邊界、右邊界介於 32bit整數範圍之內。


演算法 Greedy + 排序

和前一題 排序應用題: 不重複的區間 有異曲同工之妙。


想要讓弓箭的使用數量最精簡,就是用同一支箭去射穿區間有重複的氣球

可以想到先讓所有區間都依終點的大小作排序。

以行動支持創作者!付費即可解鎖
本篇內容共 2452 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
95會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言1
avatar-img
留言分享你的想法!
小松鼠-avatar-img
發文者
2024/06/08
題目敘述 題目會給定一個輸入陣列intervals,陣列元素都是一組pair, intervals[i] = [starti, endi],分別代表區間的起點,和區間的終點。 請問我們最少要刪除幾個區間,才能讓剩下的區間彼此都不重疊? 題目的原文敘述 測試範例 Example 1:
題目敘述 題目會給我們一個StockSpanner類別, 還有對應的建構子和function: int next( int price)介面。 next(int price)呼叫的時後回傳入當天的股票價格,要求我們計算price這個價格是過去k天以來的最高價,返回k值。 舉例來說: 若股價分
題目會給定一個輸入陣列temperatures ,分別代表每一天的溫度。 請計算每一天還要再過幾天才會遇到更溫暖的日子,如果遇不到,則回填0。 請以陣列的形式返回答案。 題目的原文敘述 約束條件 Constraints: 1 <= temperatures.length <= 10^
題目敘述 給定兩個字串word1和word2,每次操作時,可以有三個選項 插入一個字元 刪除一個字元 替換一個字元 請問把word1轉換成word2的最小操作次數是多少? 題目的原文敘述 約束條件 Constraints: 0 <= word1.length, word2.le
題目敘述 題目會給我們兩種無限量供應的骨牌Domino 和 Tromino,形狀分別如下 題目的輸入會有一個參數n。 可以任意旋轉方向進行拼接,請問最後拼成 2 x n 長方形區域的方法數有幾種? 例如 n = 3 時,拼成2 x 3 的長方形區域有五種方法。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
題目敘述 題目會給定一個輸入陣列intervals,陣列元素都是一組pair, intervals[i] = [starti, endi],分別代表區間的起點,和區間的終點。 請問我們最少要刪除幾個區間,才能讓剩下的區間彼此都不重疊? 題目的原文敘述 測試範例 Example 1:
題目敘述 題目會給我們一個StockSpanner類別, 還有對應的建構子和function: int next( int price)介面。 next(int price)呼叫的時後回傳入當天的股票價格,要求我們計算price這個價格是過去k天以來的最高價,返回k值。 舉例來說: 若股價分
題目會給定一個輸入陣列temperatures ,分別代表每一天的溫度。 請計算每一天還要再過幾天才會遇到更溫暖的日子,如果遇不到,則回填0。 請以陣列的形式返回答案。 題目的原文敘述 約束條件 Constraints: 1 <= temperatures.length <= 10^
題目敘述 給定兩個字串word1和word2,每次操作時,可以有三個選項 插入一個字元 刪除一個字元 替換一個字元 請問把word1轉換成word2的最小操作次數是多少? 題目的原文敘述 約束條件 Constraints: 0 <= word1.length, word2.le
題目敘述 題目會給我們兩種無限量供應的骨牌Domino 和 Tromino,形狀分別如下 題目的輸入會有一個參數n。 可以任意旋轉方向進行拼接,請問最後拼成 2 x n 長方形區域的方法數有幾種? 例如 n = 3 時,拼成2 x 3 的長方形區域有五種方法。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
你可能也想看
Google News 追蹤
Thumbnail
引言:突如其來的失業,你準備好了嗎? 在40到50歲這個人生階段,失業帶來的壓力比年輕時更加巨大。這時候,生活中不僅有家庭的責任,還有子女的教育、房貸的壓力等重擔。儘管多數人在這個年齡段可能已經有了一定的財務基礎,但突如其來的失業仍可能打亂生活的節奏。
Thumbnail
題目敘述 Leetcode: 650. 2 Keys Keyboard 一開始初始化的時候,記事本上只有一個字元'A'。 只允許下列兩種操作 複製目前記事本上的整個字串。 貼上之前複製的內容,串接在尾端。 請問,最少需要幾個操作, 才能製造出內容都是 "AAA...A",長度為n的字串?
Thumbnail
題目敘述 Minimum Deletions to Make String Balanced 給定一個只會有包含'a'b或'b'的輸入字串s。 每次操作可以任選一個字元刪除。 請問最少需要多少次操作,才會使得所有的'b'都在'a'後面? 測試範例 Example 1: Input: s
Thumbnail
首先,談談「可怕的資本主義」,被資本主義屠殺的封閉年代(這個是我下一篇會提到的)。網路的發達無法對「資本主義的商業模式主控權」產生威脅,是自媒體。 這個通膨的年代分享:省錢、社區美食的素人變多,我之後教大家聰明消費。就可以理解為什麼我會說「資本主義的商業模式主控權」這個意思了。
Thumbnail
2023名古屋AOK講習會筆記·七 這篇射法方面的筆記內容不多,主要是八節後半部分,但作為之後一年的練習課題也不算少。另外有想過將手之內的筆記放同一篇,不過基於手之內的重要性,還是決定另開一篇。
Thumbnail
2023名古屋AOK講習會筆記·六 進場 搭箭 取懸與打起的時機 回箭 退場
上週的作業保齡球規則 Student A 角色:玩家1、玩具球、娃娃A、娃娃B、娃娃C 規則:打擊娃娃,要贏得遊戲需要使用玩具球打擊到娃娃,共有三次機會可以打擊,全部娃娃都有被打擊到就能贏得勝利,如三次機會中只打擊到其中一隻/兩隻娃娃,另外沒被打擊到的娃娃會消失,遊戲立即結束! Studen
Thumbnail
題目敘述 題目會給定一個輸入陣列points,陣列元素都是一組pair, points[i] = [starti, endi],分別代表每顆氣球的左邊界,和右邊界。 假設弓箭射出去後,動能不會減弱,沿路上的氣球都會被射穿。 請問最少需要幾隻弓箭,才可以射穿所有氣球? 題目的原文敘述
Thumbnail
引言:突如其來的失業,你準備好了嗎? 在40到50歲這個人生階段,失業帶來的壓力比年輕時更加巨大。這時候,生活中不僅有家庭的責任,還有子女的教育、房貸的壓力等重擔。儘管多數人在這個年齡段可能已經有了一定的財務基礎,但突如其來的失業仍可能打亂生活的節奏。
Thumbnail
題目敘述 Leetcode: 650. 2 Keys Keyboard 一開始初始化的時候,記事本上只有一個字元'A'。 只允許下列兩種操作 複製目前記事本上的整個字串。 貼上之前複製的內容,串接在尾端。 請問,最少需要幾個操作, 才能製造出內容都是 "AAA...A",長度為n的字串?
Thumbnail
題目敘述 Minimum Deletions to Make String Balanced 給定一個只會有包含'a'b或'b'的輸入字串s。 每次操作可以任選一個字元刪除。 請問最少需要多少次操作,才會使得所有的'b'都在'a'後面? 測試範例 Example 1: Input: s
Thumbnail
首先,談談「可怕的資本主義」,被資本主義屠殺的封閉年代(這個是我下一篇會提到的)。網路的發達無法對「資本主義的商業模式主控權」產生威脅,是自媒體。 這個通膨的年代分享:省錢、社區美食的素人變多,我之後教大家聰明消費。就可以理解為什麼我會說「資本主義的商業模式主控權」這個意思了。
Thumbnail
2023名古屋AOK講習會筆記·七 這篇射法方面的筆記內容不多,主要是八節後半部分,但作為之後一年的練習課題也不算少。另外有想過將手之內的筆記放同一篇,不過基於手之內的重要性,還是決定另開一篇。
Thumbnail
2023名古屋AOK講習會筆記·六 進場 搭箭 取懸與打起的時機 回箭 退場
上週的作業保齡球規則 Student A 角色:玩家1、玩具球、娃娃A、娃娃B、娃娃C 規則:打擊娃娃,要贏得遊戲需要使用玩具球打擊到娃娃,共有三次機會可以打擊,全部娃娃都有被打擊到就能贏得勝利,如三次機會中只打擊到其中一隻/兩隻娃娃,另外沒被打擊到的娃娃會消失,遊戲立即結束! Studen
Thumbnail
題目敘述 題目會給定一個輸入陣列points,陣列元素都是一組pair, points[i] = [starti, endi],分別代表每顆氣球的左邊界,和右邊界。 假設弓箭射出去後,動能不會減弱,沿路上的氣球都會被射穿。 請問最少需要幾隻弓箭,才可以射穿所有氣球? 題目的原文敘述