This commit is contained in:
fleyx 2024-02-19 21:20:38 +08:00
parent 3c231d2345
commit f72bb3069a
5 changed files with 88 additions and 3 deletions

View File

@ -33,6 +33,5 @@ public class Q150 {
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(new Q150().maxPoints(new int[][]{{1, 1}, {3, 2}, {5, 3}, {4, 1}, {2, 3}, {1, 4}}));
} }
} }

View File

@ -29,6 +29,5 @@ public class Q290 {
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(new Q290().firstBadVersion(16));
} }
} }

View File

@ -0,0 +1,27 @@
package com.fanxb.common;
import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
public class Q56 {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));
int length = intervals.length, count = 0;
int[][] res = new int[intervals.length][2];
int[] startArr = intervals[0];
for (int i = 1; i < length; i++) {
int[] temp = intervals[i];
if (temp[0]<=startArr[1]) {
//可以开始合并
startArr[1] = Math.max(startArr[1], temp[1]);
} else {
res[count++] = startArr;
startArr = temp;
}
}
res[count++] = startArr;
return Arrays.copyOf(res, count);
}
}

View File

@ -0,0 +1,61 @@
package com.fanxb.common;
import java.util.Arrays;
public class Q57 {
public int[][] insert(int[][] intervals, int[] newInterval) {
int length = intervals.length, i = 0, count = 0;
int[][] res = new int[length + 1][2];
if (intervals.length == 0) return new int[][]{newInterval};
if (newInterval[1] < intervals[0][0]) {
//说明放到最前面
res[count++] = newInterval;
for (int[] num : intervals) res[count++] = num;
return res;
}
if (newInterval[0] > intervals[length - 1][1]) {
//说明放到最后
for (int[] num : intervals) res[count++] = num;
res[count++] = newInterval;
return res;
}
for (; i < length; i++) {
//开始找开始插入的位置
if (intervals[i][1] >= newInterval[0]) {
if (newInterval[1] < intervals[i][0]) {
//说明无交叉新的放到i前面
res[count++] = newInterval;
for (; i < length; i++) res[count++] = intervals[i];
return res;
}
break;
} else {
res[count++] = intervals[i];
}
}
//有交叉从i开始进行合并
int[] start = new int[]{Math.min(intervals[i][0], newInterval[0]), Math.max(intervals[i][1], newInterval[1])};
i++;
for (; i < length; i++) {
int[] temp = intervals[i];
if (temp[0] <= start[1]) {
//说明存在重叠进行合并
start[1] = Math.max(temp[1], start[1]);
} else {
//说明不存在重叠了
res[count++] = start;
break;
}
}
if (i == length) {
//说明循环完了
res[count++] = start;
} else {
//说明还有一段没合并完
for (; i < length; i++) {
res[count++] = intervals[i];
}
}
return Arrays.copyOf(res, count);
}
}

View File

@ -24,6 +24,5 @@ public class Q73 {
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(new Q73().minDistance("horse", "ros"));
} }
} }