Re: [閒聊] 每日leetcode已回收
題目:
給你一串氣球陣列
用垂直x軸的箭射破他們
擦到邊就可以了
問你最少要幾隻箭矢
直接舉例說明比較快= =
[[1,3][3,7][10,11][10,12]]
這裡的氣球需要兩隻箭
射過3跟11
就可以射破全部氣球了
解法:
反正都要看氣球
就先排序好了
排序之後
一次射一隻箭矢
一隻箭矢能破壞掉所有重疊的氣球當然最好
所以就一直往右邊找
直到沒辦法再一次射破更多
就換下一隻箭矢
然後
對ㄚ= =
```cpp
class Solution {
public:
static bool compare(const vector<int>& a, const vector<int>& b) {
return a[0] < b[0];
}
int findMinArrowShots(vector<vector<int>>& points)
{
sort(points.begin(), points.end(), compare);
int len = points.size();
int res = 0;
int lp = 0;
int rp = 0;
for(int i = 0 ; i < len ;)
{
res ++;
lp = points[i][0];
rp = points[i][1];
i++;
while(i<len)
{
if(points[i][0] > rp)
{
break;
}
else if(points[i][0] == rp)
{
while(i < len && points[i][0] == rp)
{
i ++;
}
break;
}
else if(points[i][0] > lp)
{
lp = points[i][0];
}
if(points[i][1] < rp)
{
rp = points[i][1];
}
if(lp == rp)
{
while(i < len && points[i][0] == rp)
{
i ++;
}
break;
}
i++;
}
}
// for(auto k : points)
// {
// cout << "[" << k[0] << "," << k[1] << "]" ;
// }
return res;
}
};
```
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 134.208.57.64 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1710732944.A.FB7.html
→
03/18 11:36,
1年前
, 1F
03/18 11:36, 1F
→
03/18 11:37,
1年前
, 2F
03/18 11:37, 2F
推
03/18 11:38,
1年前
, 3F
03/18 11:38, 3F
→
03/18 11:38,
1年前
, 4F
03/18 11:38, 4F
→
03/18 11:38,
1年前
, 5F
03/18 11:38, 5F
→
03/18 11:39,
1年前
, 6F
03/18 11:39, 6F
→
03/18 11:39,
1年前
, 7F
03/18 11:39, 7F
→
03/18 11:42,
1年前
, 8F
03/18 11:42, 8F
→
03/18 11:43,
1年前
, 9F
03/18 11:43, 9F
→
03/18 11:43,
1年前
, 10F
03/18 11:43, 10F
推
03/18 11:43,
1年前
, 11F
03/18 11:43, 11F
→
03/18 11:43,
1年前
, 12F
03/18 11:43, 12F
推
03/18 11:44,
1年前
, 13F
03/18 11:44, 13F
→
03/18 11:47,
1年前
, 14F
03/18 11:47, 14F
推
03/18 11:50,
1年前
, 15F
03/18 11:50, 15F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 55 之 1548 篇):