• LintCode: Number of Airplanes in the Sky


    C++

    (1)把interval数组中的所有start和所有end放在同一个数组中,然后进行排序,遇到start就起飞一架飞机,遇到一架end就降落一架飞机,所以start有个+1属性,end有个-1属性,这样就可以根据排序之后的数组得知任意时间飞行中的飞机的数量了

    (2)pair,make_pair,val.first,val.second

    (3)sort(), max()

    (4)for (auto &i : Object) {}

    (5)push_back()

     1 /**
     2  * Definition of Interval:
     3  * classs Interval {
     4  *     int start, end;
     5  *     Interval(int start, int end) {
     6  *         this->start = start;
     7  *         this->end = end;
     8  *     }
     9  */
    10 class Solution {
    11 public:
    12     /**
    13      * @param intervals: An interval array
    14      * @return: Count of airplanes are in the sky.
    15      */
    16     int countOfAirplanes(vector<Interval> &airplanes) {
    17         // write your code here
    18         vector<pair<int, int> > v;
    19         for (auto &i : airplanes) {
    20             v.push_back(make_pair(i.start, 1));
    21             v.push_back(make_pair(i.end, -1));
    22         }
    23         int cnt = 0, res = 0;
    24         sort(v.begin(), v.end());
    25         for (auto &i : v) {
    26             cnt += i.second;
    27             res = max(cnt, res);
    28         }
    29         return res;
    30     }
    31 };

    另一个解法(无需排序):

    刚开始阅读题目的时候,我以为起飞时间和降落时间都是0~24之内,所以就用了两个长度30的辅助数组,这种方法可以避免排序。

    但是,无法AC,因为interval中的元素,最大的有几十万,如果辅助数组也这么大的话,那很容易超时。

     1 /**
     2  * Definition of Interval:
     3  * classs Interval {
     4  *     int start, end;
     5  *     Interval(int start, int end) {
     6  *         this->start = start;
     7  *         this->end = end;
     8  *     }
     9  */
    10 class Solution {
    11 public:
    12     /**
    13      * @param intervals: An interval array
    14      * @return: Count of airplanes are in the sky.
    15      */
    16     int countOfAirplanes(vector<Interval> &airplanes) {
    17         // write your code here
    18         int fly[30] = {0};
    19         int land[30] = {0};
    20         int len = airplanes.size();
    21         for (int i = 0; i < len; i++ ) {
    22             fly[airplanes[i].start] ++;
    23             land[airplanes[i].end] --;
    24         }
    25         int max = 0, cur = 0;
    26         for (int i = 0; i < 30; i++ ) {
    27             cur = cur + fly[i] + land[i];
    28             if (cur > max) {
    29                 max = cur;
    30             }
    31         }
    32         return max;
    33     }
    34 };
  • 相关阅读:
    jquery append、prepend、before等等
    js模板引擎之juicer,特别好用
    js模板引擎之artTemplate
    smarty中调用php内置函数
    Win10安装软件时出现2502、2503错误代码的问题
    Nexus私有仓库简介
    【Maven】Nexus(Maven仓库私服)下载与安装
    [Nginx] – 性能优化 – 配置文件优化
    [Nginx] – 安全优化 – 配置文件优化
    VMware Authorization Service 未运行怎么解决
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/5109478.html
Copyright © 2020-2023  润新知