57. 插入区间
题目:
给出一个无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
示例 1:
输入:intervals = [[1,3],[6,9]], newInterval = [2,5] 输出:[[1,5],[6,9]]
示例 2:
[[1,2],[3,5],[6,7],[8,10],[12,16]]
[4,8]
[4,8]
[3,5],[6,7],[8,10]
1 class Solution { 2 public int[][] insert(int[][] intervals, int[] newInterval) { 3 //特殊情况特殊处理 4 if(intervals.length==0){ 5 int[][] res={{newInterval[0],newInterval[1]}}; 6 return res;} 7 8 //新建一个数组把原来两个合并在一起 9 int[][] temp_array=new int[intervals.length+1][intervals[0].length]; 10 for(int i=0;i<intervals.length;i++){ 11 temp_array[i][0]=intervals[i][0]; 12 temp_array[i][1]=intervals[i][1]; 13 } 14 temp_array[intervals.length][0]=newInterval[0]; 15 temp_array[intervals.length][1]=newInterval[1]; 16 17 //对新数组排序 18 Arrays.sort(temp_array,new Comparator<int[]>(){ 19 public int compare(int[] array1,int[] array2){ 20 return array1[0]-array2[0]; 21 }}); 22 //核心代码 23 List<int[]> list=new ArrayList<int[]>(); 24 for(int i=0;i<temp_array.length;++i){ 25 if(list.size()==0||list.get(list.size()-1)[1]<temp_array[i][0]){ 26 list.add(new int[]{temp_array[i][0],temp_array[i][1]}); 27 } else{ 28 list.get(list.size()-1)[1]=Math.max(temp_array[i][1],list.get(list.size()-1)[1]); 29 } 30 } 31 return list.toArray(new int[list.size()][]); 32 } 33 }
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术