452. 用最少數量的箭引爆氣球
452. 用最少數量的箭引爆氣球
在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以縱座標並不重要,因此只要知道開始和結束的橫座標就足夠了。開始座標總是小於結束座標。
一支弓箭可以沿著 x 軸從不同點完全垂直地射出。在座標 x 處射出一支箭,若有一個氣球的直徑的開始和結束座標為 xstart,xend, 且滿足 xstart ≤ x ≤ xend,則該氣球會被引爆。可以射出的弓箭的數量沒有限制。 弓箭一旦被射出之後,可以無限地前進。我們想找到使得所有氣球全部被引爆,所需的弓箭的最小數量。
思路
- 很容易想到排序,可以對氣球的起點從小到大排序,此時定義能射爆氣球範圍的右邊值為pre,射爆第一個氣球時,pre = points[0][1],然後可以遍歷氣球,判斷下一個氣球的起點是否在pre左邊,在的話則需要更新pre = min(pre, points[i][1]),否則,ans需要++,pre = points[i][1]。
class Solution {
public:
int findMinArrowShots(vector<vector<int>>& points) {
if(points.empty()) {
return 0;
}
sort(points.begin(), points.end(), [](const vector<int>& a, const vector<int>& b) {
return a[0] < b[0];
});
int ans = 1, pre = points[0][1];
for(int i = 1; i < points.size(); i++) {
if(points[i][0] > pre) {
ans++;
pre = points[i][1];
}
else {
pre = min(pre, points[i][1]);
}
}
return ans;
}
};
- 如果對氣球的終點進行排序,思路也大體一致,只是在遍歷氣球時,只需判斷pre和points[i][0]的大小更新pre和ans即可,因為points[i][1]的值肯定比pre大。
class Solution {
public:
int findMinArrowShots(vector<vector<int>>& points) {
if(points.empty()) {
return 0;
}
sort(points.begin(), points.end(), [](const vector<int>& a, const vector<int>& b) {
return a[1] < b[1];
});
int ans = 1, pre = points[0][1];
for(int i = 1; i < points.size(); i++) {
if(points[i][0] > pre) {
ans++;
pre = points[i][1];
}
}
return ans;
}
};
相關文章
- 力扣-452. 用最少數量的箭引爆氣球力扣
- 2020_11_23 每日一題 452. 用最少數量的箭引爆氣球每日一題
- 【LeetCode貪心#09】用最少數量的箭引爆氣球,(涉及區間重疊情況判斷)LeetCode
- 程式碼隨想錄演算法訓練營第第36天 | 452. 用最少數量的箭引爆氣球、435. 無重疊區間、763.劃分字母區間演算法
- 最少操作次數
- 3296. 移山所需的最少秒數
- WPS怎麼畫氣球? WPS畫氣球形狀並填充顏色的技巧教程
- 小米OJ #8【最少交換次數】
- 3111. 覆蓋所有點的最少矩形數目
- 用最少的程式碼打造一個Mini版的gRPC框架RPC框架
- 普林斯頓大學團隊用「氣泡鑄造」技術製造如氣球般的軟機器人,具有多種抓取能力機器人
- 力扣刷題——3096.得到更多分數的最少關卡數目力扣
- 3224. 使差值相等的最少陣列改動次數陣列
- 用Python看2018年北上廣深空氣質量Python
- LeetCode 3014[輸入單詞需要的最少按鍵次數I]LeetCode
- 2617. 網格圖中最少訪問的格子數(困難)
- 全球主要雲遊戲平臺對比:Facebook偏休閒、騰訊雲遊戲數量最少?遊戲
- RCU熱氣球體驗鳥瞰元宇宙中的黑格拉世界遺產元宇宙
- 2019年零售報告:數字引爆點
- 【js】Leetcode每日一題-製作m束花所需的最少天數JSLeetCode每日一題
- 氣球遊戲騰訊面試題滑動視窗解法遊戲面試題
- [譯] 用 React 製作線性代數教程示例:網格與箭頭React
- 買球賽用什麼APP 正規買球平臺排行APP
- 用最少的程式碼模擬gRPC四種訊息交換模式RPC模式
- 用最少的程式碼手工實現一個Promise,5分鐘看懂Promise
- ES6箭頭函式的剩餘引數函式
- leetcode:1326. 灌溉花園的最少水龍頭數目(dp,困難)LeetCode
- 【leetcode】45. Jump Game II 非負陣列的最少跳躍步數LeetCodeGAM陣列
- 編寫高質量箭頭函式的5個最佳做法函式
- 研究發現倉庫數量增加的地方空氣汙染也會隨之增加
- 氣球塔防6 for Mac(BloonsTD6 塔防闖關遊戲)Mac遊戲
- 2018世界盃射手榜排名排行 世界盃進球數最多的球員球星
- APP開發費用明細介紹,花最少的錢開發APPAPP
- leetcode:462. 最少移動次數使陣列元素相等 II(數學,中等)LeetCode陣列
- ELEC 292球門 桌面應用程式
- LeetCode 452. Minimum Number of Arrows to Burst Balloons Sort/MediumLeetCode
- [每日一題]452. Minimum Number of Arrows to Burst Balloons每日一題
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列