【Leetcode刷題篇】leetcode56 合併區間

mind_programmonkey發表於2020-12-08

給出一個區間的集合,請合併所有重疊的區間。

示例 1:
輸入: intervals = [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]
解釋: 區間 [1,3] 和 [2,6] 重疊, 將它們合併為 [1,6].

示例 2:
輸入: intervals = [[1,4],[4,5]]
輸出: [[1,5]]
解釋: 區間 [1,4] 和 [4,5] 可被視為重疊區間。

注意:輸入型別已於2019年4月15日更改。 請重置預設程式碼定義以獲取新方法簽名。

解題思路:對其自定義排序,之後網attaylist按順序新增,並比較值,替換值

class Solution {
    public int[][] merge(int[][] intervals) {
        if(intervals.length==0) {
	    		return intervals;
	    	}
	    	// 自定義排序
	    	Arrays.sort(intervals,(a,b)->(a[0]-b[0]));
	    	ArrayList<int[]> res = new ArrayList<>();
	    	// 對其遍歷
	    	for(int i=0;i<intervals.length;i++) {
	    		int L = intervals[i][0];
	    		int R = intervals[i][1];
	    		// 判斷
	    		if(res.size()==0 || res.get(res.size()-1)[1] < L) {
	    			// 不合並
	    			res.add(new int[] {L,R});
	    		}else {
	    			// 合併
	    			res.get(res.size()-1)[1] = Math.max(res.get(res.size()-1)[1], R);
	    		}
	    	}	    	
	    	
	    	return res.toArray(new int[res.size()][]);
    }
}

相關文章