提交 59f9c2b3 编写于 作者: GreyZeng's avatar GreyZeng

update code

上级 381dc676
......@@ -6,8 +6,6 @@ import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeSet;
import java.util.function.Predicate;
import java.util.stream.Stream;
// 线段的最大重合问题
// https://www.nowcoder.com/questionTerminal/f8fa4b67dd054892966d280790c42ba3
......@@ -45,27 +43,29 @@ public class NowCoder_LineCoverMax {
return maxCover;
}
// lambda 写法,可过对数器,但是超时,待优化 TODO
// public static int maxCover4(int[][] lines) {
// int min = Arrays.stream(lines).min(Comparator.comparingInt(o -> o[0])).get()[0];
// int max = Arrays.stream(lines).max(Comparator.comparingInt(o -> o[1])).get()[1];
// long cover;
// long maxCover = 0;
// for (int i = min; i <= max; i++) {
// int finalI = i;
// cover =
// Arrays.stream(lines).filter(
// line -> {
// // 这里要注意 如果[1,2] ,[2, 3] 中2 算一个重合点的话,
// // 则条件为:line[0] <= i && line[1] >= i
// // 如果不算的话,line[0] <= i+0.5 && line[1] >= i + 0.5
// return line[0] <= finalI && line[1] >= finalI;
// })
// .count();
// maxCover = Math.max(cover, maxCover);
// }
// return (int)maxCover;
// }
// lambda 写法,可过对数器,但是超时,待优化
// FIXME
public static int maxCover4(int[][] lines) {
int min = Arrays.stream(lines).min(Comparator.comparingInt(o -> o[0])).get()[0];
int max = Arrays.stream(lines).max(Comparator.comparingInt(o -> o[1])).get()[1];
long cover;
long maxCover = 0;
for (int i = min; i <= max; i++) {
int finalI = i;
cover =
Arrays.stream(lines)
.filter(
line -> {
// 这里要注意 如果[1,2] ,[2, 3] 中2 算一个重合点的话,
// 则条件为:line[0] <= i && line[1] >= i
// 如果不算的话,line[0] <= i+0.5 && line[1] >= i + 0.5
return line[0] <= finalI && line[1] >= finalI;
})
.count();
maxCover = Math.max(cover, maxCover);
}
return (int) maxCover;
}
// 堆解法
public static int maxCover(int[][] m) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册