贪心算法(13)(java)归并区间

打印 上一主题 下一主题

主题 1873|帖子 1873|积分 5619

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
标题:
以数组 intervals 表现多少个区间的集合,此中单个区间为 intervals = [starti, endi] 。请你归并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
示例 1:
  1. <strong>输入:</strong>intervals = [[1,3],[2,6],[8,10],[15,18]]
  2. <strong>输出:</strong>[[1,6],[8,10],[15,18]]
  3. <strong>解释:</strong>区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
复制代码
解法:
1.排序:左端点或右端点排序;
2.根据排序后的结果,总结规律,进而得出解决这个问题的计谋;
3.贪心计谋:求并集
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Comparator;
  4. import java.util.List;
  5. public class Solution {
  6.     public int[][]merge(int[][]intervals)
  7.     {
  8.         //按左端点排序
  9.         Arrays.sort(intervals, Comparator.comparingInt(v -> v[0]));
  10.         //合并区间,求并集
  11.         int left=intervals[0][0],right=intervals[0][1];
  12.         List<int[]>ret=new ArrayList<>();
  13.         for(int i=1;i<intervals.length;i++)
  14.         {
  15.             int a=intervals[i][0],b=intervals[i][1];
  16.             if(a<=right)//有重叠部分
  17.             {
  18.                 right=Math.max(right,b);
  19.             }
  20.             else//不能合并
  21.             {
  22.                 ret.add(new int[]{left,right});
  23.                 left=a;
  24.                 right=b;
  25.             }
  26.         }
  27.         ret.add(new int[]{left,right});
  28.         return ret.toArray(new int[0][]);
  29.     }
  30.     public static void main(String[] args) {
  31.         Solution solution=new Solution();
  32.         int [][]intervals=new int[][]{
  33.                 new int[]{1,3},
  34.                 new int[]{2,6},
  35.                 new int[]{8,10},
  36.                 new int[]{15,18},
  37.         };
  38.         int [][] merged=solution.merge(intervals);
  39.         for(int[] interval:merged)
  40.         {
  41.             System.out.println(Arrays.toString(interval));
  42.         }
  43.     }
  44. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表