牛牛有一些线段,每个线段由起点和终点组成,表示为[starti, endi]。请合并所有重叠的线段,并返回覆盖输入中所有线段的非重叠线段数组。
区块链毕设网qklbishe.com为您提供问题的解答
牛牛有一些线段,每个线段由起点和终点组成,表示为[starti, endi]。请合并所有重叠的线段,并返回覆盖输入中所有线段的非重叠线段数组。
这是一个常见的区间合并问题。我们可以使用贪心算法来解决这个问题。首先,我们需要将所有线段按照起点从小到大排序。然后,我们遍历所有线段,如果当前线段与上一个线段有重叠,那么我们就将它们合并。否则,我们就将上一个线段加入结果数组中。
import java.util.*; public class Solution { public int[][] mergeIntervals(int[][] intervals) { if (intervals == null || intervals.length == 0) { return new int[0][0]; } Arrays.sort(intervals, (a, b) -> a[0] - b[0]); List<int[]> res = new ArrayList<>(); int[] prev = intervals[0]; for (int i = 1; i < intervals.length; i++) { if (intervals[i][0] <= prev[1]) { prev[1] = Math.max(prev[1], intervals[i][1]); } else { res.add(prev); prev = intervals[i]; } } res.add(prev); return res.toArray(new int[res.size()][]); } }
53:37
以上就是关于问题牛牛有一些线段,每个线段由起点和终点组成,表示为[starti, endi]。请合并所有重叠的线段,并返回覆盖输入中所有线段的非重叠线段数组。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训