LeetCode-452 射擊氣球

在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以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<int, int> &a, const pair<int, int> &b){
    return a.first<b.first;
}
class Solution {
public:

    int findMinArrowShots(vector<pair<int, int>>& points) {
        if(points.size() == 0){
            return 0;
        }
        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; i<points.size(); i++){
            if(points[i].first<=shoot_end){
                shoot_begin = points[i].first;
                if(shoot_end>points[i].second){
                    shoot_end = points[i].second;
                }
            }
            else{
                shoot_num++;
                shoot_begin = points[i].first;
                shoot_end = points[i].second;
            }
        }
        return shoot_num;
    }
};

STL pair

類模板:template <class T1, class T2> struct pair

參數:T1是第一個值的數據類型,T2是第二個值的數據類型。

功能:pair將一對值組合成一個值,這一對值可以具有不同的數據類型(T1和T2),兩個值可以分別用pair的兩個公有函數first和second訪問。

具體用法:

1.定義(構造):

   pair<int, double> p1;  //使用默認構造函數
   pair<int, double> p2(1, 2.4);  //用給定值初始化
   pair<int, double> p3(p2);  //拷貝構造函數

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

 pair<int, double> p1;  //使用默認構造函數
 p1.first = 1;
 p1.second = 2.5;
 cout << p1.first << ' ' << p1.second << endl;
 
輸出結果:1    2.5

3.賦值operator = :

(1)利用make_pair:

 pair<int, double> p1;
  p1 = make_pair(1, 1.2);

std::pair主要的作用是將兩個數據組合成一個數據,兩個數據可以是同一類型或者不同類型。例如std::pair<int,float> 或者 std::pair<double,double>等。pair實質上是一個結構體,其主要的兩個成員變量是first和second,這兩個變量可以直接使用。初始化一個pair可以使用構造函數,也可以使用std::make_pair函數

   pair<int ,int >p (5,6);
   pair<int ,int > p1= make_pair(5,6);
   pair<string,double> p2 ("aa",5.0);
   pair <string ,double> p3 = make_pair("aa",5.0);

(2)變量間賦值:

  pair<int, double> p1(1, 1.2);
  pair<int, double> p2 = p1;

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

   pair<string,int> p;
    pair<int ,int > p;
   pair<double,int> p;

Algorithm sort

函數名 功能描述
sort 對給定區間所有元素進行排序
stable_sort 對給定區間所有元素進行穩定排序
partial_sort 對給定區間所有元素部分排序
partial_sort_copy 對給定區間複製並排序
nth_element 找出給定區間的某個位置對應的元素
is_sorted 判斷一個區間是否已經排好序
partition 使得符合某個條件的元素放在前面
stable_partition 相對穩定的使得符合某個條件的元素放在前面

STL map

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章