/**
* @author: 酒城
* @date: 2022/5/22 19:48$
* @Description: 数组合并区间
*/
public class Test03 {
public static void main(String[] args) {
//测试用例
// int[][] current = new int[][]{{1,3},{2,6},{8,10},{15,18}};
// int[][] current = new int[][]{{1,4},{4,5}};
// int[][] current = new int[][]{{1,4},{0,4}};
// int[][] current = new int[][]{{1,4},{2,3}};
int[][] current = new int[][]{{1,4},{0,0}};
int[][] ints = merge(current);
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i][0]+" "+ ints[i][1]);
}
}
/**
*
* @param intervals 目标数组
* @return 返回合并后的数组
* 思路:
* 1、对二位数组中的第一列进行排序
* 2、将合并后的一维数组存放的集合中
* 3、需要临时一维数组来存放当前合并的集合
* 收获:
* 1:数组排序:使用Arrays.sort()方法,
* 2:集合转化为数组使用:list.toArray();
* 3:灵活使用临时变量;
*
*/
public static int[][] merge(int[][] intervals){
Arrays.sort(intervals,(a,b) -> a[0] - b[0]);
List<int[]> list = new ArrayList<>();
int[] term = intervals[0];
for (int i = 1; i < intervals.length; i++){
if(term[1] >= intervals[i][0]){
term[1] = Math.max(term[1],intervals[i][1]);
}else {
list.add(term);
term = intervals[i];
}
}
list.add(term);
return list.toArray(new int[list.size()][2]);
}
}
力扣算法--合并集合
最新推荐文章于 2024-04-16 17:24:37 发布