区间合并
2017-09-19 11:48
120 查看
vector<pair<int, int>>merge(string s) { vector<pair<int, int>>tmp, result; if (s.empty()) { return result; } int len = s.size(), flag = 1, sum = 0,j=0,left=0,right=0; while (s[j] == ' '&&j < len - 1)//过滤字符串前面的空格 j++; for (int i = j; i <= len; i++)//在字符串中提取区间 { if (s[i] == ' ' || s[i] == '\0')tmp.push_back(make_pair(left, sum)), sum = 0, flag = 1; else if (s[i] == '-')flag = -1; else if (s[i] == ',')left = sum, sum = 0, flag = 1; else sum = flag*(sum * 10 + s[i] - '0'); } sort(tmp.begin(), tmp.end());//排序 for (int i = 0; i < tmp.size(); i++)//如果第二个区间的前者比第一的后者小,证明可以合并,合并后的区间后者是两个区间后者的大值;反之,则不可以合并 { if (result.empty()) result.push_back(tmp[i]); else{ int len = result.size(); right = result[len - 1].second; if (tmp[i].first <= right) { right = (right>tmp[i].second) ? right : tmp[i].second; result[len - 1].second = right; } else result.push_back(tmp[i]); } } return result; }
相关文章推荐
- 合并区间
- POJ 3368 Frequent values(线段树区间合并)
- hdu 1540 单点修改+区间合并
- 【CodeForce】 46D Parking Lot (线段树 区间合并)
- POJ - 3667 Hotel(线段树 区间合并 区间查询)
- Hrbust 1818 石子合并问题--直线版(区间DP)
- 【bzoj1858】[Scoi2010]序列操作 线段树区间合并
- POJ 3667 区间合并段查询段修改 中级线段树
- HDU 1540【线段树区间合并】
- treap分离合并 区间操作 poj 3468
- hdu 3308(线段树的区间合并)
- hdu 3308 LCIS(单点更新,区间合并)
- HDU 3308【线段树-query:区间最长单调上升序列,update:结点更新,区间合并】
- HDOJ 3308 LCIS (线段树区间合并)
- BestCoder 2nd Anniversary Wool 区间合并模板
- HDU1540:Tunnel Warfare(线段树区间合并)
- LeetCode 56. Merge Intervals 合并区间
- POJ 3667 - Hotel(线段树+区间合并)
- Poj 3667——hotel——————【线段树区间合并】
- 石子合并问题(区间DP)