LeetCode(14/100)

张开发
2026/4/14 17:03:27 15 分钟阅读

分享文章

LeetCode(14/100)
//排序加start,end双指针(记录起点终点防止只合并一次)import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;import java.util.List;class Solution {public int[][] merge(int[][] intervals) {if (intervals null || intervals.length 0) {return new int[0][];}Listint[] merged new ArrayList();int count intervals.length;// 排序保留Arrays.sort(intervals, new Comparatorint[]() {Overridepublic int compare(int[] o1, int[] o2) {return o1[0] - o2[0];}});int i 0;while (i count) {// 当前区间起点int start intervals[i][0];// 当前区间终点int end intervals[i][1];// 关键循环往后找所有能合并的区间连续合并while (i count - 1 end intervals[i 1][0]) {end Math.max(end, intervals[i 1][1]);i;}// 最终合并完的区间加入集合merged.add(new int[] { start, end });i;}return merged.toArray(new int[merged.size()][]);}}

更多文章