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

今天中国疫情最新情况seo日常优化内容是什么

今天中国疫情最新情况,seo日常优化内容是什么,网站建设flash设计,免费网站建设翻译56. 合并区间 - 力扣(LeetCode) 首先是合并区间,这道题是ACwing的模板题,其实我有点想不通为什么要把一道模拟题做成模板,直到今年科软机试考了这道题,感觉这道题确实是面试和机试的高频考点: …

56. 合并区间 - 力扣(LeetCode)

首先是合并区间,这道题是ACwing的模板题,其实我有点想不通为什么要把一道模拟题做成模板,直到今年科软机试考了这道题,感觉这道题确实是面试和机试的高频考点:

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());int start = -2e9;int end = -2e9;vector<vector<int>> res;for(auto interval : intervals){int newstart = interval[0];int newend = interval[1];if(newstart > end){if(start != -2e9) res.push_back({start,end});start = newstart; end = newend;}else{end = max(end , newend);}}if(start != -2e9) res.push_back({start,end});return res;}
};

我这里也是直接背模板,首先我们要sort一下(听说科软机试是纯c,没有内置sort函数。。)然后声明start和end为非常小的值,其实也是把[start,end]当作第一个区间,然后开始遍历每一个新区间,这里就分两种大情况:

一种是新区间的左端点要大于上一个区间的右端点,就没有交集。这时候判断一下,如果start不是当初那个极小值就把维护的这一段区间加入到结果中,然后转而去用start和end维护新区间。

另一种是新区间的左端点小于上一个区间的右端点,这时就有了交集,让end=max(end,newend)实际上还包括了两种小情况。没有接触过这道题的读者可以想一想是哪两种小情况。

最后遍历结束后,别忘了把最后一个维护的区间加入。

因为他每回插入答案的都是上一个维护的区间,所以导致在最后维护的新区间不会插入到结果中。

57. 插入区间 - 力扣(LeetCode)

这里有一个非常偷懒的做法:就是直接copy上一题的代码,然后把新区间插入到区间集合里面进行区间合并,而且由于本来就是有序的,所以sort一下好像不会花太多时间。但是这样就没有利用到有序的特性。

class Solution {
public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {intervals.push_back(newInterval);sort(intervals.begin(),intervals.end());int start = -2e9;int end = -2e9;vector<vector<int>> res;for(auto interval : intervals){int newstart = interval[0];int newend = interval[1];if(newstart > end){if(start != -2e9) res.push_back({start,end});start = newstart; end = newend;}else{end = max(end , newend);}}if(start != -2e9) res.push_back({start,end});return res;}
};

更好的做法是这一种:

但是这种模拟题需要思维逻辑特别清晰,我不一定能想到

class Solution {
public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {int left = newInterval[0];int right = newInterval[1];bool placed = false;vector<vector<int>> ans;for (const auto& interval: intervals) {if (interval[0] > right) {// 在插入区间的右侧且无交集if (!placed) {ans.push_back({left, right});placed = true;                    }ans.push_back(interval);}else if (interval[1] < left) {// 在插入区间的左侧且无交集ans.push_back(interval);}else {// 与插入区间有交集,计算它们的并集left = min(left, interval[0]);right = max(right, interval[1]);}}if (!placed) {ans.push_back({left, right});}return ans;}
};

这个placed标记新区间是否被插入。大伙看一下注释吧。

1.如果当前遍历的区间的右端点在新区间左端点左边,就没有交集。

2.发现第一个满足区间左端点大于新区间右端点的区间,如果新区间没插入就把left和right维护的中间一大坨插入,再插入这个区间。

3.其他情况就是有交集,计算并集维护这一坨区间。

在遍历结束后,特判新区间有没有插入,如果没有的话说明新区间足够大把后面的区间全部覆盖了。所以最后我们插入维护的区间结束。

http://www.dtcms.com/wzjs/466123.html

相关文章:

  • 网站推荐几个免费的舆情信息报送
  • 公司企业网站建设多少钱今天重大新闻国内最新消息
  • 爱网站最新发布址公司产品怎样网上推广
  • 光明附近网站建设公司线上线下整合营销方案
  • 梅州市城乡建设部网站首页电脑上突然出现windows优化大师
  • 天津建站方案电商平台开发
  • 创意设计师个人网站浙江搜索引擎优化
  • office 网页制作软件关键词seo服务
  • 网页设计尺寸分辨率南宁哪里有seo推广厂家
  • 深圳微信网站开发国际军事形势最新消息
  • 东莞企业网站设计排名网站seo快速优化技巧
  • wordpress 音乐 插件怎么用seo的定义是什么
  • 专业开发网站报价单seo引擎优化工具
  • 最新网站建设技术上海百度整站优化服务
  • 网站框架一般用什么做注册网站需要多少钱
  • 不是固定ip如何做网站怎么制作一个网页
  • wordpress教程安装教程seo排名方案
  • 做网站运营用什么配置电脑天津百度seo排名优化
  • 怎么做外链到其他网站推荐友情链接
  • 武汉做网站企业设计网站排名
  • 手机网站建设行业分析百度推广后台
  • 江西网站制作百度开放云平台
  • wordpress给博客主题添加自定义主题设置页面seo网站优化工具大全
  • 美工做图详情页设计百度seo权重
  • 哈尔滨网站建设技术托管天津seo外包
  • 中国纪检监察报记者电话aso优化榜单
  • 商城网站开发与设计搜索引擎大全
  • 网站你应该知道我说的是什么吧百度app下载安装普通下载
  • 万网制作网站糕点烘焙专业培训学校
  • 中央政府门户网站最近一周新闻大事摘抄