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

leetcode 57. Insert Interval

题目描述

代码:由于intervals已经按照左端点排序,并且intervals中的区间全部不重叠,那么可以断定intervals中所有区间的右端点也已经是有序的。先二分查找intervals中第一个其右端点>=newInterval左端点的区间。然后按照类似于56. Merge Intervals中的方法合并区间。

class Solution {
public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {vector<vector<int>> res;int len = intervals.size();if(len == 0){res.push_back(newInterval);return res;}res.reserve(len);//二分查找第一个其右端点>=newInterval左端点的区间int idx = bs(intervals,newInterval[0]);for(int i = 0;i < idx;i++){res.push_back(intervals[i]);}if(idx==len){res.push_back(newInterval);}else{bool to_insert_flag = true;int left = newInterval[0];int right =newInterval[1];if(right<=intervals[idx][1]){if(right<intervals[idx][0]){res.push_back(newInterval);res.push_back(intervals[idx]);}else{left  = min(left,intervals[idx][0]);right = intervals[idx][1];res.push_back({left,right});}idx++;to_insert_flag = false;}else{left = min(left,intervals[idx][0]);idx++;}while(idx < len){if(to_insert_flag){if(right>=intervals[idx][0]){right = max(right,intervals[idx][1]);}else{res.push_back({left,right});res.push_back(intervals[idx]);to_insert_flag = false;}}else{res.push_back(intervals[idx]);}idx++;}if(to_insert_flag){res.push_back({left,right});}}return res;}//二分查找,第一个其右端点>=target的区间int bs(vector<vector<int>>& intervals,int target){int left = 0;int right = intervals.size();int mid = 0;while(left < right){mid = left + ((right-left)>>1);if(intervals[mid][1] >= target){right = mid;}else{left = mid+1;}}return left;}
};
http://www.xdnf.cn/news/6682.html

相关文章:

  • Node.js 同步加载问题详解:原理、危害与优化策略
  • Spring Cloud动态配置刷新:@RefreshScope与@Component的协同机制解析
  • Gitee DevOps:中国企业数字化转型的加速引擎
  • UNiAPP地区选择
  • 解码国际数字影像产业园:成都高品质办公楼宇
  • OpenCV阈值处理完全指南:从基础到高级应用
  • 5G行业专网部署费用详解:投资回报如何最大化?
  • Zephyr OS Nordic芯片的Flash 操作
  • 提权脚本Powerup命令备忘单
  • 从小区到商场再到校园,AI智能分析网关V4高空抛物检测方案全场景护航
  • Spring Boot 封装 MinIO 工具
  • DDS(数据分发服务) 和 P2P(点对点网络) 的详细对比
  • [QMT量化交易小白入门]-五十四、核心资产ETF轮动目前年化只有74%了,在过滤掉当天止损,当天买入的之后
  • Java 21 + Spring Boot 3.5:AI驱动的高性能框架实战
  • require/exports 或 import/export的联系和区别,各自的使用场景
  • 基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)
  • Expo项目在本地打包apk的问题
  • Vue主题色切换实现方案(CSS 变量 + 类名切换)
  • 【前端】[vue3] [uni-app]使用 vantUI 框架
  • 使用 OpenCV 将图像中标记特定颜色区域
  • 黑马k8s(九)
  • day 26
  • Python训练营打卡 Day27
  • Java 中使用 Redis 实现消息订阅/发布
  • 三极管知识
  • 根据台账批量制作个人表
  • 5G-A和未来6G技术下的操作系统与移动设备变革:云端化与轻量化的发展趋势
  • 【Pandas】pandas DataFrame kurt
  • 如何让 Google 收录 Github Pages 个人博客
  • go封装将所有数字类型转浮点型,可设置保留几位小数