LeetCode 452 射擊氣球

2021-09-16 18:48:58 字數 2161 閱讀 4473

在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以y座標並不重要,因此只要知道開始和結束的x座標就足夠了。開始座標總是小於結束座標。平面內最多存在104個氣球。

一支弓箭可以沿著x軸從不同點完全垂直地射出。在座標x處射出一支箭,若有乙個氣球的直徑的開始和結束座標為 xstart,xend, 且滿足 xstart ≤ x ≤ xend,則該氣球會被引爆。可以射出的弓箭的數量沒有限制。 弓箭一旦被射出之後,可以無限地前進。我們想找到使得所有氣球全部被引爆,所需的弓箭的最小數量。

example:

輸入:

[[10,16], [2,8], [1,6], [7,12]]

輸出:2

解釋:對於該樣例,我們可以在x = 6(射爆[2,8],[1,6]兩個氣球)和 x = 11(射爆另外兩個氣球)。

解答:

bool cmp(const pair&a, const pair&b)

sort(points.begin(), points.end(), cmp);

int shoot_num = 1;

int shoot_begin = points[0].first;

int shoot_end = points[0].second;

for(int i=1; ipoints[i].second)

}else

}return shoot_num;

}};

類模板:template struct pair

引數:t1是第乙個值的資料型別,t2是第二個值的資料型別。

功能:pair將一對值組合成乙個值,這一對值可以具有不同的資料型別(t1和t2),兩個值可以分別用pair的兩個公有函式first和second訪問。

具體用法:

1.定義(構造):

pairp1;  //使用預設建構函式

pairp2(1, 2.4); //用給定值初始化

pairp3(p2); //拷貝建構函式

2.訪問兩個元素(通過first和second):

pairp1;  //使用預設建構函式

p1.first = 1;

p1.second = 2.5;

cout << p1.first << ' ' << p1.second << endl;

輸出結果:1 2.5

3.賦值operator = :

(1)利用make_pair:

pairp1;

p1 = make_pair(1, 1.2);

std::pair主要的作用是將兩個資料組合成乙個資料,兩個資料可以是同一型別或者不同型別。例如std::pair或者 std::pair等。pair實質上是乙個結構體,其主要的兩個成員變數是first和second,這兩個變數可以直接使用。初始化乙個pair可以使用建構函式,也可以使用std::make_pair函式

pairp (5,6);

pairp1= make_pair(5,6);

pairp2 ("aa",5.0);

pair p3 = make_pair("aa",5.0);

(2)變數間賦值:

pairp1(1, 1.2);

pairp2 = p1;

pair的型別:

pair 是 一種模版型別。每個pair 可以儲存兩個值。這兩種值無限制。也可以將自己寫的struct的物件放進去。。

pairp;

pairp;

pairp;

函式名 功能描述

sort 對給定區間所有元素進行排序

stable_sort 對給定區間所有元素進行穩定排序

partial_sort 對給定區間所有元素部分排序

partial_sort_copy 對給定區間複製並排序

nth_element 找出給定區間的某個位置對應的元素

is_sorted 判斷乙個區間是否已經排好序

partition 使得符合某個條件的元素放在前面

stable_partition 相對穩定的使得符合某個條件的元素放在前面

射擊氣球 LeetCode452

在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以y座標並不重要,因此只要知道開始和結束的x座標就足夠了。開始座標總是小於結束座標。平面內最多存在104個氣球。一支弓箭可以沿著x軸從不同點完全垂直地射出。在座標x處射出一支箭,若有乙個氣...

leetcode452引爆氣球

在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以y座標並不重要,因此只要知道開始和結束的x座標就足夠了。開始座標總是小於結束座標。平面內最多存在104個氣球。一支弓箭可以沿著x軸從不同點完全垂直地射出。在座標x處射出一支箭,若有乙個氣...

LeetCode 452 投飛鏢刺破氣球

在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以y座標並不重要,因此只要知道開始和結束的x座標就足夠了。開始座標總是小於結束座標。平面內最多存在104個氣球。一支弓箭可以沿著x軸從不同點完全垂直地射出。在座標x處射出一支箭,若有乙個氣...