LeetCode--057--插入区间(java)
给出一个无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
示例 1:
输入: intervals = [[1,3],[6,9]], newInterval = [2,5]
输出: [[1,5],[6,9]]
示例 2:
输入: intervals =[[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval =[4,8]
输出: [[1,2],[3,10],[12,16]]
解释: 这是因为新的区间[4,8]与[3,5],[6,7],[8,10]重叠。
方法1:在56的基础上,采用先插入再合并的方式,过于繁琐,可以直接看方法2
class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
if(intervals.length == 0){
int[][] res = new int[1][2];
res[0] = newInterval;
return res;
}
List<int[]> list = new ArrayList();
int temp = -1;//
boolean flag = false;
for(int i = 0;i < intervals.length;i++){
if(newInterval[0] < intervals[i][0]){
flag=true;//当没有找到要插入的位置,必插入末尾
temp = i;
break;
}
}
for(int i = 0;i < intervals.length;i++){
if(i == temp){
list.add(newInterval);
}
list.add(intervals[i]);
}
if(!flag){
list.add(newInterval);
}
int[][] in2 = new int[list.size()][2];
for(int i = 0;i < list.size();i++){
in2[i][0] = list.get(i)[0];
in2[i][1] = list.get(i)[1];
}
return helper(in2);
}
public int[][] helper(int[][] in2){
List<int[]> res = new ArrayList<>();
for(int i = 0;i < in2.length-1;i++ ){
if(in2[i+1][0] <= in2[i][1]){
in2[i+1][0] = in2[i][0];
in2[i+1][1] = Math.max(in2[i+1][1],in2[i][1]);
}else{
res.add(in2[i]);
}
}
res.add(in2[in2.length - 1]);
int[][] res_s =new int[res.size()][2];
for(int i = 0;i < res.size();i++){
res_s[i][0] = res.get(i)[0];
res_s[i][1] = res.get(i)[1];
}
return res_s;
}
}
方法2:
class Solution {
public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
List<Interval> result = new ArrayList<Interval>();
boolean isAddedNew = false;
for(Interval curr : intervals){
if(newInterval.start > curr.end){
//new > curr
result.add(curr);
}else if (newInterval.end < curr.start){
//curr > new
if(!isAddedNew){
result.add(newInterval);
isAddedNew = true;
}
result.add(curr);
}else{
int newStart = curr.start < newInterval.start ?
curr.start : newInterval.start;
int newEnd = curr.end > newInterval.end ?
curr.end : newInterval.end;
newInterval.start = newStart;
newInterval.end = newEnd;
}
}
if(!isAddedNew){
result.add(newInterval);
}
return result;
}
}
2019-05-17 18:14:22
LeetCode--057--插入区间(java)的更多相关文章
- Java实现 LeetCode 57 插入区间
57. 插入区间 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: inte ...
- LeetCode 57 插入区间
题目: 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: intervals ...
- leetcode 56 合并区间 JAVA
题目: 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [ ...
- leetcode 56合并区间 java
//先排序,将左区间小的放在前面,然后如果前一个的右区间大于下一个的左区间,则可以合并,分别用两个下标指向当前的大区间和将要考察的小区间 class Solution { public int[ ...
- leetcode Insert Interval 区间插入
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4051169.html 题目链接:leetcode Insert Interval 使用模拟 ...
- 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】
[057-Insert Interval(插入区间)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a set of non-overlapping in ...
- LeetCode:汇总区间【228】
LeetCode:汇总区间[228] 题目描述 给定一个无重复元素的有序整数数组,返回数组区间范围的汇总. 示例 1: 输入: [0,1,2,4,5,7] 输出: ["0->2&quo ...
- 【BZOJ】3065: 带插入区间K小值
http://www.lydsy.com/JudgeOnline/problem.php?id=3065 题意:带插入.修改的区间k小值在线查询.(原序列n<=35000, 询问<=175 ...
- lintcode:插入区间
题目: 插入区间 给出一个无重叠的按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 样例 插入区间[2, 5] 到 [ ...
- bzoj 3065: 带插入区间K小值 替罪羊树 && AC300
3065: 带插入区间K小值 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1062 Solved: 253[Submit][Status] Des ...
随机推荐
- 2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala
w Scala 简介 | 菜鸟教程 http://www.runoob.com/scala/scala-intro.html
- selinux 了解2
凡是对内核级, 如selinux的修改, 不只是对软件, 程序的修改, 那么修改之后都要重新启动. 针对windows下的截图, 像linux下的screenshot截图那样设置快捷键 shift+s ...
- python生成requirements.txt 导出项目依赖
使用pip freeze $ pip freeze > requirements.txt 这种方式是把整个环境中的包都列出来了,如果是虚拟环境可以使用. 通常情况下我们只需要导出当前项目的req ...
- 【原创】基于phpGrace+uniApp开发之:5.登录界面增加图片验证码
1.目的: 采用phpGrace中的图片验证码,在用户名+密码登录时使用图片验证码进行验证. 2.文档地址: 图片验证码的文档地址:http://www.phpgrace.com/tools/info ...
- Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数
Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数 绑定表达式中可以有简单的运算和字符串连接, 但字符串需放在双引号 ...
- 测开之路一百零二:jquery元素操作
jquery对元素操作,获取/替换文本(.text()).html(.html()).属性(.attr()).值(.val()) html代码 text() 根据标签获取文本值 同一个标签下筛选明细 ...
- 【ABAP系列】SAP ABAP选择屏幕(SELECTION SCREEN)事件解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP选择屏幕(SEL ...
- React-onsenui之RouterNavigator组件解读
var index = 1;// index的最外层初始值,亦是全局 var MyPage = React.createClass({ //构成工具栏组件,根据hasBackButton的值为back ...
- JAVA调用shell脚本利用ansible修改多节点上的redis参数
创建hosts文件 创建ansible-playbook执行时所用到的hosts文件,例如 /etc/redis/hosts 利用shell命令根据传入的host名和地址写入hosts文件: #set ...
- 快速排序 && 寻找第K大(小)的数
参考:https://minenet.me/2016/08/24/quickSort.html 快速排序 利用分治法可将快速排序的分为三步: 在数据集之中,选择一个元素作为"基准" ...