第一次认真的分析源码,感觉还不错,看了老韩的视频以为懂了,但是还是理解的不够透彻,自己慢慢分析懂得更多,大佬懂我的疑惑能解决一下吗?
// 1. 按照区间左边的值进行升序排列
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
// 2. 初始化 outputs, 用于存储合并之后区间结果的动态数组
ArrayList<int[]> outputs = new ArrayList<>();
// 3. 遍历处理每一个区间
for (int i = 0; i < intervals.length; i++) {
int[] currInterval = intervals[i];
if (outputs.isEmpty()) {
outputs.add(currInterval);
} else { // 判断是否有重叠,有的话则合并
int[] outputsLastInterval = outputs.get(outputs.size() - 1);
int outputLastRight = outputsLastInterval[1];
int currLeft = currInterval[0];
if (outputLastRi