目录

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

题目:

以数组 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.贪心策略:求并集

java 复制代码
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));
        }
    }

}
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
念_ovo7 分钟前
【算法/c++】利用中序遍历和后序遍历建二叉树
数据结构·c++·算法
梭七y9 分钟前
【力扣hot100题】(048)二叉树的最近公共祖先
算法·leetcode·职场和发展
luckyme_13 分钟前
leetcode-代码随想录-链表-移除链表元素
算法·leetcode·链表
Vitalia15 分钟前
⭐算法OJ⭐寻找最短超串【动态规划 + 状态压缩】(C++ 实现)Find the Shortest Superstring
开发语言·c++·算法·动态规划·动态压缩
_安晓20 分钟前
数据结构 -- 图的存储
数据结构·算法
C-DHEnry1 小时前
迪杰斯特拉+二分+优先队列+拓扑+堆优化(奶牛航线Cowroute、架设电话线dd、路障Roadblocks、奶牛交通Traffic)
c++·算法·动态规划·二分·拓扑·堆优化·迪杰斯特拉
.YY001.1 小时前
数据结构第一轮复习--第六章图包含代码
数据结构·算法
?Agony1 小时前
P17_ResNeXt-50
人工智能·pytorch·python·算法
计算机真好丸2 小时前
第J9周:Inception v3算法实战与解析
算法
HR Zhou2 小时前
群体智能优化算法-算术优化算法(Arithmetic Optimization Algorithm, AOA,含Matlab源代码)
人工智能·算法·数学建模·matlab·优化·智能优化算法