1.合并区间
56. 合并区间 - 力扣(LeetCode)
对于这种区间问题,我们应该先排序根据排序的结果总结一些规律,进而的得出解决该问题的策略。
class Solution {public static int[][] merge(int[][] intervals) {//第一步进行左端点排序Arrays.sort(intervals,(v1,v2)->{return v1[0] -v2[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){//left始终是最小的 right要更新为最大的才行right = Math.max(right,b);}else{//把前面的数字合并成一个新的数组 之后更新left right再次进行比较ret.add(new int[]{left,right});left = a;right = b;}}//如果最后一个数组的 a > right 更新 left 和 right 之后就无法再进入循环// 如果最后一组要合并的数字 a并没有大于right同样无法进入else合并数组// 所以最后要加入left rightret.add(new int[]{left,right});//把ret里面存的数组全部列出来return ret.toArray(new int[0][]);}
}