4月打卡活动第16天 LeetCode第56题:合并区间(中等)
之前做过这道题,但是自己的解法没过,今天把自己的解法改对了
- 解题思路:
class Solution {
public int[][] merge(int[][] intervals) {
int n = intervals.length;
int[][] ans = new int[n][2];
if(n==1 || n==0) return intervals;
//排序
for(int l=0;l<n-1;l++){
for(int h=0;h<n-1-l;h++){
if(intervals[h][0] > intervals[h+1][0]){
int temp=intervals[h][0];
intervals[h][0]=intervals[h+1][0];
intervals[h+1][0]=temp;
temp=intervals[h][1];
intervals[h][1]=intervals[h+1][1];
intervals[h+1][1]=temp;
}
}
}
int k = 0;
int[] mem = new int[2];
mem[0] = intervals[0][0];
mem[1] = intervals[0][1];
for(int i=1;i<n;i++){
if(intervals[i][0]>mem[1]){
ans[k][0] = mem[0];
ans[k][1] = mem[1];
k++;
mem[0] = intervals[i][0];
mem[1] = intervals[i][1];
}else{
if(intervals[i][1]>mem[1]){
mem[1] = intervals[i][1];
}
}
}
ans[k][0] = mem[0];
ans[k][1] = mem[1];
k++;
int ansLast[][] = new int[k][2];
for(int l=0;l<k;l++){
ansLast[l][0] = ans[l][0];
ansLast[l][1] = ans[l][1];
}
return ansLast;
}
}