校门外的树
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是11米。我们可以把马路看成一个数轴,马路的一端在数轴00的位置,另一端在LL的位置;数轴上的每个整数点,即0,1…
import java.util.Scanner;
public class Main {
public int number(int[][] A, int l) {
int sum = 0;
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A.length; j++) {
if ( i == j || A[j][1] == -1 || A[i][1] < A[j][0] || A[i][0] > A[j][1] ) {
continue;
}
A[i][0] = Math.min(A[j][0], A[i][0]);
A[i][1] = Math.max(A[j][1], A[i][1]);
A[j][0] = 0;
A[j][1] = -1;
}
}
for (int i = 0; i < A.length; i++) {
sum += A[i][1] - A[i][0] + 1;
}
return l + 1 - sum;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Main test = new Main();
int l = scanner.nextInt();
int n = scanner.nextInt();
int[][] A = new int[n][2];
for (int i = 0; i < n; i++) {
for (int j = 0; j <= 1; j++) {
A[i][j] = scanner.nextInt();
}
}
System.out.print(test.number(A, l));
}
}
看了很多,感觉都差不多。我个人觉得,在区间数比较少的时候,直接将区间合并,然后计算速度应该会更快,占用的内存也会更少。
|