挑了一個比較好懂得解答
覺得多數題目先判斷是否有值
//[[1,3],[2,6],[8,10],[15,18]]public int[][] merge(int[][] intervals) { int length=intervals.length;//4 if(length<=1) return intervals; int[] start = new int[length]; int[] end = new int[length]; for(int i=0;i<length;i++){ start[i]=intervals[i][0];//每個陣列第一個比[1,2,8,15]end[i]=intervals[i][1];//每個陣列第二個比[3,6,10,18]} Arrays.sort(start); Arrays.sort(end); int startIndex=0; int endIndex=0; List<int[]> result = new LinkedList<>(); while(endIndex<length){ //as endIndex==length-1 is evaluated first, start[endIndex+1] will never hit out of index if(endIndex==length-1 || start[endIndex+1]>end[endIndex]){//2>3->8>6->[1,6] result.add(new int[]{start[startIndex],end[endIndex]}); startIndex=endIndex+1; } endIndex++; } return result.toArray(new int[result.size()][]); }
文章標籤
全站熱搜
