Merge Intervals
Tc : O(nlogn) for sorting the intervals based on start time + O(n) for traversing the intervals
Sc: O(n) for using list + O(n) for using result array
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals,(a,b)->a[0]-b[0]);
int start = intervals[0][0];
int end = intervals[0][1];
List<int[]> list = new ArrayList<>();
for(int i =1;i<intervals.length;i++){
if(end >= intervals[i][0]){
start = Integer.min(intervals[i][0],start);
end = Integer.max(intervals[i][1],end);
}
else{
list.add(new int[]{start,end});
start = intervals[i][0];
end = intervals[i][1];
}
}
list.add(new int[]{start,end});
int result[][] = new int[list.size()][2];
for(int i=0;i<list.size();i++){
result[i] = list.get(i);
}
return result;
}
}
Top comments (0)