【leetcode】Insert Interval
来源:互联网 发布:docker仓库端口号 编辑:程序博客网 时间:2024/06/16 12:41
前言:这一题的难度为hard,题目描述比较简单,思想也不复杂,陷阱就在于很多情况都要考虑,细节问题要多注意。
除了题目中给出的两种情况,下面是我出错的测试用例
第一类测试用例:
原数组:[[3,5],[12,15]] 插入:[6,6]
期望结果:[[3,5],[6,6],[12,15]]
第二类测试用例:
原数组:[[0,5],[9,12]],插入:[7, 16]
期望结果:[[0,5],[7,16]]
第三类测试用例:
原数组:[[1,5]],插入:[0,3]
期望结果:[[0,5]]
第四类测试用例:
原数组:[[1,5]],插入:[6,8]
期望结果:[[1,5],[6,8]]
最后成功的代码为:
{ if(intervals.size() == 0 || newInterval.start > intervals.rbegin() -> end) { intervals.push_back(newInterval); return intervals; } if(newInterval.end < intervals.begin() -> start) { intervals.insert(intervals.begin(), newInterval); return intervals; } vector<Interval>::iterator left = intervals.begin(), right = intervals.end(); vector<Interval>::iterator mid; while(left < right) { mid = left + (right - left)/2; //cout << mid -> start << " " << mid -> end << endl; if(newInterval.start >= mid -> start && newInterval.start <= mid -> end) break; else if(newInterval.start < mid -> start) right = mid; else if(newInterval.start > mid -> end) left = mid + 1; } vector<Interval>::iterator sp = mid; if(newInterval.start > mid->end) sp += 1; cout << sp -> start << " " << sp -> end << endl; left = intervals.begin(); right = intervals.end(); while(left < right) { mid = left + (right - left)/2; if(newInterval.end >= mid -> start && newInterval.end <= mid -> end) break; else if(newInterval.end < mid -> start) right = mid; else if(newInterval.end > mid -> end) left = mid + 1; } vector<Interval>::iterator ep = mid; if(newInterval.end < mid->start) ep -= 1; cout << ep -> start << " " << ep -> end << endl; if(ep < sp) { intervals.insert(sp, newInterval); } else { ep -> end = ep -> end > newInterval.end ? ep -> end : newInterval.end; sp -> start = sp -> start < newInterval.start ? sp -> start : newInterval.start; if(sp < ep) { sp -> end = ep -> end; intervals.erase(sp + 1, ep + 1); } } return intervals;}
0 0
- LeetCode: Insert Interval & Merge Interval
- LeetCode题目 Insert Interval
- LeetCode: Insert Interval
- LeetCode Insert Interval
- LeetCode: Insert Interval
- Leetcode: Insert Interval
- [LeetCode] Insert Interval
- LeetCode Insert Interval
- [LeetCode]Insert Interval
- leetcode insert interval
- [leetcode]Insert Interval
- LeetCode-Insert Interval
- [leetcode] Insert Interval
- LeetCode - Insert Interval
- 【leetcode】Insert Interval
- leetcode Insert Interval
- 【leetcode】Insert Interval
- LeetCode Insert Interval
- C++编程入门系列之六(算法的基本控制结构之选择结构)
- IE8解决new Date("2016-9-5")返回NaN问题
- C#控制台基础 将char类型数组转换为string字符串 new string()
- .NET 环境中使用RabbitMQ
- unity组件的添加和删除
- 【leetcode】Insert Interval
- 特殊数字
- Ubuntu(Windows 8.1虚拟机)装caffe记录
- 深入浅出 RPC - 浅出篇
- JQuery查找所有选中的input元素
- 深入浅出 RPC - 深入篇
- 开灯问题
- 创建视图表create view 表名
- jquery appendgrid 插件 水一篇