当前位置: 首页 > news >正文

国土局网站建设制度阿里云 wordpress 响应时间

国土局网站建设制度,阿里云 wordpress 响应时间,吸引人的公众号名称大全,网站设计到底做多宽题目: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 解法一(for循环暴力解算&…

题目:

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

解法一(for循环暴力解算):

依次遍历intervals中的每个元素i,然后根据每个索引元素i与intervals后面的索引位置元素j进行重复区间判断,若不是重复区间,则遍历j后续的索引元素直至遍历至intervals的最后一个位置元素,若是则更新重复区间,删除原有j和i索引位置的元素,添加新的索引位置元素,然后迭代进入下一个嵌套函数直至,i和j均没有可重叠区间位置,如下为笔者代码:

class Solution {
public:void getupdate(vector<vector<int>>& results){int length = results.size();vector<int> result;for(int i=0;i<length;i++){for(int j=i+1;j<length;j++){int i_long = results[i][1]-results[i][0];int j_long = results[j][1]-results[j][0];int max_long = max(abs(results[j][1]-results[i][0]), abs(results[i][1]-results[j][0]));if(i_long+j_long>=max_long){int new_left = min(results[i][0], results[j][0]);int new_right = max(results[j][1], results[i][1]);results.erase(results.begin() + j);results.erase(results.begin() + i);result.push_back(new_left);result.push_back(new_right);results.push_back({result});getupdate(results);return;}}}}vector<vector<int>> merge(vector<vector<int>>& intervals) {vector<vector<int>> results = intervals;getupdate(results);return results;}
};

解法二(排序):

首先对数组intervals进行排序,如果我们按照区间的左端点排序,那么在排完序的列表中,可以合并的区间一定是连续的。如下图所示,标记为蓝色、黄色和绿色的区间分别可以合并成一个大区间,它们在排完序的列表中是连续的:

我们用数组 merged 存储最终的答案。首先,我们将列表中的区间按照左端点升序排序。然后我们将第一个区间加入 merged 数组中,并按顺序依次考虑之后的每个区间:

    1、如果当前区间的左端点在数组 merged 中最后一个区间的右端点之后,那么它们不会重合,我们可以直接将这个区间加入数组 merged 的末尾;

    2、否则,它们重合,我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点,将其置为二者的较大值。

如下为实现代码:

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.size() == 0) {return {};}sort(intervals.begin(), intervals.end());vector<vector<int>> merged;for (int i = 0; i < intervals.size(); ++i) {int L = intervals[i][0], R = intervals[i][1];if (!merged.size() || merged.back()[1] < L) {merged.push_back({L, R});}else {merged.back()[1] = max(merged.back()[1], R);}}return merged;}
};

时间复杂度:O(nlogn),其中 n 为区间的数量。除去排序的开销,我们只需要一次线性扫描,所以主要的时间开销是排序的 O(nlogn)。空间复杂度:O(logn),其中 n 为区间的数量。这里计算的是存储答案之外,使用的额外空间。O(logn) 即为排序所需要的空间复杂度。

笔者小记:

1、对于vector<vector<int>>& intervals,函数sort(intervals.begin(), intervals.end());表示利用intervals内层的第一个元素的大小对intervals外层元素进行排序。

http://www.dtcms.com/a/433956.html

相关文章:

  • 网站 dns 解析快速建立平台网站开发网站模板设计
  • 如何做网站链接分享朋友圈根据描述生成图片的网站
  • 仿牌网站安全常州网站网站建设
  • 沈阳市网站建设公司网站代运营合作协议
  • 网络公司网站建设报价wordpress页面文件目录
  • 中职国示范建设网站企业门户模板
  • 无锡专业制作外贸网站的公司技术培训网站
  • 潍坊网站托管视频多平台发布
  • 做网站的域名怎么申请长沙小红书推广公司
  • 帝国建站系统网页开发背景怎么写
  • 网站开发php工程师数商云商城
  • 郑州区块链数字钱包网站开发过程携程网的推广方式主要有哪些
  • 企业网站源码 html5+xml房地产开发公司有哪些部门
  • 每天网站外链做几条最好服装设计学院
  • wordpress邮件分析插件英文seo如何优化
  • 规划管理部门的网站建设个体工商户可以申请网站建设吗
  • 2017做网站挣钱网站什么英文字体
  • 有没有学做ppt发网站或论坛网站开发申请微信支付
  • 宝坻区建设路小学网站怎么做教育类型的网站
  • 洒长春菩网站建设wordpress 众筹网站
  • 深圳网站建设推广优化公司wordpress编辑器商品模板
  • 网站建设广州哪家好电子商务网站建设pdf
  • iis 添加网站 win7免费手机版网站建设
  • 网站建设公司如何收费福州 网站建设 医疗
  • 利川市网站建设怎么申请注册公司
  • 岷县网站建设抚顺网站建设
  • 南山电商网站建设wordpress教程 2015
  • asp怎么做网站招聘网站建设深圳
  • 掘金网站建设文章生成器免费版
  • 无锡网站制作工具服务器就是一台电脑吗