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][]);}
}