您的位置:首页 > 娱乐 > 八卦 > 网站优化关键词排名_大连个人网站开发制作_每日舆情信息报送_什么建站程序最利于seo

网站优化关键词排名_大连个人网站开发制作_每日舆情信息报送_什么建站程序最利于seo

2025/5/2 2:19:04 来源:https://blog.csdn.net/2301_81564787/article/details/146855489  浏览:    关键词:网站优化关键词排名_大连个人网站开发制作_每日舆情信息报送_什么建站程序最利于seo
网站优化关键词排名_大连个人网站开发制作_每日舆情信息报送_什么建站程序最利于seo

题目:

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

解法:

1.排序:左端点或右端点排序;

2.根据排序后的结果,总结规律,进而得出解决这个问题的策略;

3.贪心策略:求并集

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;public class Solution {public int[][]merge(int[][]intervals){//按左端点排序Arrays.sort(intervals, Comparator.comparingInt(v -> v[0]));//合并区间,求并集int left=intervals[0][0],right=intervals[0][1];List<int[]>ret=new ArrayList<>();for(int i=1;i<intervals.length;i++){int a=intervals[i][0],b=intervals[i][1];if(a<=right)//有重叠部分{right=Math.max(right,b);}else//不能合并{ret.add(new int[]{left,right});left=a;right=b;}}ret.add(new int[]{left,right});return ret.toArray(new int[0][]);}public static void main(String[] args) {Solution solution=new Solution();int [][]intervals=new int[][]{new int[]{1,3},new int[]{2,6},new int[]{8,10},new int[]{15,18},};int [][] merged=solution.merge(intervals);for(int[] interval:merged){System.out.println(Arrays.toString(interval));}}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com