《编程之美》 2.19 区间重合判断
来源:互联网 发布:手机淘宝购物步骤 编辑:程序博客网 时间:2024/05/22 07:57
解法二的思路:
1 排序 O(N*logN) (N为目标区间的个数)
2 合并 O(N)
3 二分查找 O(k*logN) (k为合并后区间的个数)
// 2.19.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include<vector>#include<algorithm>using namespace std;struct area{int begin;int end;};bool compare(area& a,area& b){return a.begin<b.begin;}int _tmain(int argc, _TCHAR* argv[]){int arr[] = {2, 5, 3, 4, 3, 9, 11, 15};vector<area> vec;area a;for(int i=0;i<sizeof(arr)/sizeof(arr[0]);){a.begin=arr[i++];a.end=arr[i++];vec.push_back(a);}sort(vec.begin(),vec.end(),compare);//排序//cout << "after sort: " << endl; for (int i = 0; i < vec.size(); i ++) cout << "(" << vec[i].begin << ", " << vec[i].end << ") "; cout << endl;////合并for(int i=1;i<vec.size();){if(vec[i].begin<=vec[i-1].end && vec[i].end>=vec[i-1].end){vec[i-1].end=vec[i].end;vec.erase(vec.begin()+i);}else if(vec[i].begin<=vec[i-1].end && vec[i].end<vec[i-1].end){vec.erase(vec.begin()+i);}else++i;}//cout << "after merger :" << endl; for (int i = 0; i < vec.size(); i ++) cout << "(" << vec[i].begin << ", " << vec[i].end << ") "; cout << endl;//二分查找area target;//设置源区间target.begin=2;target.end=8;int first=0;int last=vec.size()-1;bool flag=false;while(first<=last){int mid=(first+last)/2;if(vec[mid].begin<=target.begin&&vec[mid].end>=target.end){flag=true;break;}else if(vec[mid].end<target.begin)first=mid+1;else if(vec[mid].begin>target.end)last=mid-1;elsebreak;}if(flag) cout<<"true"<<endl;else cout<<"false"<<endl;return 0;}
- 《编程之美》 2.19 区间重合判断
- 编程之美 2.19 区间重合判断
- 编程之美2.19区间重合判断
- 区间重合判断-编程之美2.19
- 编程之美 2.19 区间重合判断
- 编程之美-区间重合判断
- 【编程之美】区间重合判断
- 编程之美区间重合判断
- 【编程之美】区间重合判断
- 编程之美区间重合判断
- [编程之美]区间重合判断
- 编程之美 - 区间重合判断
- 读书笔记之编程之美 - 2.19 区间重合判断
- 编程之美——2.19 区间重合判断
- 区间重合判断(编程之美2.19)
- 编程之美读书笔记2.19—区间重合判断
- 编程之美2.19—区间重合判断
- 【编程之美】区间重合判断(线段树)
- 计数排序+位运算
- 一个游戏程序员的学习资料
- arm的gnu环境
- dos cd 命令无法切换目录
- flex String 相关处理
- 《编程之美》 2.19 区间重合判断
- Default.png显示时长问题
- js判断一个字符串是否以某个子字符串开头
- MySQL不支持InnoDB修改,InnoDB优缺点
- 奢望
- Flex Mobile中巧用FlexGlobals.topLevelApplication.navigator
- OSI参考模型
- C#e.keyvalue的值的含义
- jlinkV8指示灯不亮 usb无法识别的问题