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

让网站做的有吸引力网络安全培训

让网站做的有吸引力,网络安全培训,方正隶变简体可以做网站用么,做初中题赚钱的网站贪心:只考虑局部最优解,不考虑全部最优解。有时候得不到最优解。 DP:考虑全局最优解。DP的特点:无后效性(正在求解的时候不关心前面的解是怎么求的); 二者都是在求最优解的,都有最优…

贪心:只考虑局部最优解,不考虑全部最优解。有时候得不到最优解。
DP:考虑全局最优解。DP的特点:无后效性(正在求解的时候不关心前面的解是怎么求的);
二者都是在求最优解的,都有最优子结构的性质(子问题的最优解构成当前问题的最优解)。
经典的区间分割问题
1、无重叠区间

思路:如果当前区间的左端点大于等于前一个区间的右端点,说明当前区间可以是一个独立的区间,我们可以保存它,如果当前区间的左端点小于前一个区间的右端点,说明当前区间和前面一个区间重合了,我们需要删除一个区间,那么删除哪个更好呢?很明显是当前这个,因为下一个区间如果和前面那个区间重合了,也肯定和当前区间重合,这时候又要删除一个区间,但是下一个区间如果和当前区间重合,那么把当前区间删除后,不一定会和前面的区间重合。所以不论是Case 2还是Case 3我们都应该删除current区间。因此我们只需要不断的维护前一个保留区间的右端点即可,只有当当前区间的左端点大于前一个保留区间右端点时,我们才更新保留区间。
在这里插入图片描述

class Solution {
public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {int len = intervals.size();if(len == 1) return 0;sort(intervals.begin(),intervals.end(),[](const auto& u,const auto& v){return u[1] < v[1];});int base = intervals[0][1];//第一个里面的右边界int cnt = 1;for(int i=1;i<len ;i++){// 若当前区间与最近区间没有重叠,则移动到当前区间进行后续判定(之后的区间不可能与最近区间重叠)// 若当前区间与最近区间重叠,则删除二者中右边界更靠后的if(intervals[i][0] >= base){cnt++;            //统计非重叠的区间数量base = intervals[i][1];}}return len - cnt;}
};
//排序规则:
//先对右边界排序,右边界相同的时候左边界大的排在前面

区间合并类型的问题一般都要对左端点或者右端点进行排序,然后再进行区间的合并就方便了,因为左端点或者右端点已经有序了。
对这道题来说前后紧挨着的区间的相对位置关系只有3种:
对这道题来说前后紧挨着的区间的相对位置关系只有3种:

1.  st1             ed1    两区间相互包含st2    ed22.  st1        ed1         两区间不完全包含但有交叉st2         ed23.  st1        ed1         两区间完全没有交集st2        ed24. 不会出现这种情况      st1       ed1     因为之前对区间的左端点排过序了,后面区间的左端点不st2        ed2          可能超过前面区间的左端点最多相同。

2、合并区间://按照左边界排序

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {vector<vector<int>> res;sort(intervals.begin(),intervals.end(),[](const vector<int>& a,const vector<int>& b){if(a[0] == b[0]) return a[1] < b[1]; //左边界相等时按右边界排return a[0] < b[0] ;//先按照左边界排序});//记录新区间的左右端点,判断当前区间能否合并int left = intervals[0][0],right = intervals[0][1];for(auto interval : intervals){//当前区间左端点小于当前右边界,合并,并更新可能增大的右边界//当前区间左端点大于当前右边界,记录新的区间,进入下一个新区间构建if(interval[0] <= right && interval[1] > right){right = interval[1];continue;}if(interval[0] > right){res.push_back({left,right});left = interval[0];right = interval[1];}}res.push_back({left,right});//添加最后一个区间return res;}
};
//按照左边界排序

3、区间列表的交集

两个指针分别指向列表区间的开头
每次求得两个区间的交集(左端点取max,右端点取min)
每次将右端点靠后的区间指针向后移动。比较的时候舍弃右边界小的
在这里插入图片描述

class Solution {
public:vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {int len1 = firstList.size();int len2 = secondList.size();vector<vector<int>> res;int i =0,j =0;while(i < len1 && j < len2){int l = max (firstList[i][0],secondList[j][0]);int r = min(firstList[i][1],secondList[j][1]);if(l <= r) res.push_back({l,r});if(firstList[i][1] == secondList[j][1]) {i++;j++;} else if(firstList[i][1] < secondList[j][1]) i++;else j++;}return res;}
};
http://www.hkea.cn/news/659359/

相关文章:

  • 在线房屋设计网站seo推广平台服务
  • 电子政务门户网站建设代码短链接生成网址
  • 崔各庄地区网站建设百度非企渠道开户
  • 怎么用自己的电脑做网站服务器产品推广平台排行榜
  • 中国做的比较好的电商网站有哪些哈市今日头条最新
  • 微信怎么做网站推广百度网站优化培训
  • 网站开发支持多个币种电子技术培训机构
  • 移动网站设计与制作怎么找关键词
  • 国内移动端网站做的最好的厦门人才网597人才网
  • 建网站收费吗aso关键词覆盖优化
  • 西安的网站设计与制作首页微信视频号怎么推广引流
  • 顺义公司建站多少钱pc端百度
  • wordpress收费资源下载关键词优化的策略
  • 广州做网站建设的公司网站公司
  • 做网络平台的网站有哪些广州网站维护
  • 网页 代码怎么做网站东莞市民最新疫情
  • 电子商务网站设计中影响客户体验的元素有搜索引擎有哪些种类
  • 网站建设难点优化关键词技巧
  • 免费行情网站链接百度知道合伙人官网
  • 餐饮公司网站建设的特点大数据智能营销
  • 济南快速排名刷关键词排名seo软件
  • 系统做网站的地方百度推广登录后台登录入口
  • 集约化网站建设情况广告公司网站制作
  • 网站制作发票字节跳动广告代理商加盟
  • 义乌做网站武汉seo推广优化公司
  • 济宁哪家网站建设公司正规谷歌浏览器 免费下载
  • 有没有女的做任务的网站广东省新闻
  • seo长尾关键词优化如何做网站推广优化
  • 网站搭建服务合同seo排名赚
  • 东莞有什么比较好的网站公司苏州关键词排名系统