Leetcode 56. Merge Intervals
时间:2022-06-22
本文章向大家介绍Leetcode 56. Merge Intervals,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/83312821
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书
1. Description
2. Solution
- Version 1
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
int size = intervals.size();
vector<Interval> result;
while(!intervals.empty()) {
bool flag = true;
for(int j = 1; j < intervals.size(); j++) {
if(intervals[0].start <= intervals[j].end && intervals[0].end >= intervals[j].start) {
flag = false;
result.emplace_back(Interval(min(intervals[0].start, intervals[j].start), max(intervals[0].end, intervals[j].end)));
intervals.erase(intervals.begin() + j);
break;
}
}
if(flag) {
result.emplace_back(intervals[0]);
}
intervals.erase(intervals.begin());
}
if(size == result.size()) {
return result;
}
else {
return merge(result);
}
}
};
- Version 2
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
vector<Interval> result;
vector<int> flag(intervals.size(), 1);
for(int i = 0; i < intervals.size(); i++) {
if(!flag[i]) {
continue;
}
for(int j = i + 1; j < intervals.size(); j++) {
if(intervals[i].start <= intervals[j].end && intervals[i].end >= intervals[j].start) {
result.emplace_back(Interval(min(intervals[i].start, intervals[j].start), max(intervals[i].end, intervals[j].end)));
flag[i] = 0;
flag[j] = 0;
break;
}
}
if(flag[i]) {
result.emplace_back(intervals[i]);
flag[i] = 0;
}
}
if(intervals.size() == result.size()) {
return result;
}
else {
return merge(result);
}
}
};
Reference
- [WCF权限控制]利用WCF自定义授权模式提供当前Principal[原理篇]
- [自定义服务器控件] 第一步:文本框。
- 检查两个数据库里的表名、字段是否一致的一种方法
- 如何在Python中从零开始实现随机森林
- 基类、接口的应用——表单控件:一次添加、修改一条记录,一次修改多条记录。(上)
- 使命必达: 深入剖析WCF的可靠会话[协议篇](下)
- 分页控件和几个相关控件的源代码
- Python编程中的反模式
- Python机器学习库:Scikit-Learn简介
- 很简单的企业管理器---我写程序的方式,几个自定义控件。
- 使命必达: 深入剖析WCF的可靠会话[原理揭秘篇](上)
- 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)
- 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造
- 如何使用Python基线预测进行时间序列预测
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android自动获取输入短信验证码库AutoVerifyCode详解
- Android编程实现对话框形式进度条功能示例
- Android ButtonOnClick事件的写法总结
- Android 自定义弹出菜单和对话框功能实例代码
- linux文件管理命令实例分析【权限、创建、删除、复制、移动、搜索等】
- Android编程操作手机通讯录的方法示例
- Android中oncreate中获得控件高度或宽度的实现方法
- Android编程自定义对话框(Dialog)位置及大小的方法
- android端实现验证码随机生成功能
- Android编程实现切换imageView的方法分析
- 猿实战20——商品发布之sku与笛卡尔乘积的那些事儿
- 浅谈Android单元测试的作用以及简单示例
- linux上传并配置jdk和tomcat的教程详解
- Android SQLite事务处理结合Listview列表显示功能示例
- Android开发之如何自定义数字键盘详解