头条第四题解法探讨
// 我的思路是维护一个memo[i][j]数组 记录[i,j]区间对应的最大最小值
// 但是case通过率只有20% 提示是什么数组越界非法访问的错误
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] a = new int[n];
int[] b = new int[n];
int[][] memoA = new int[n][n];
int[][] memoB = new int[n][n];
for(int i=0; i<n; i++) {
a[i]= scanner.nextInt();
}
for(int i=0; i<n; i++) {
b[i]= scanner.nextInt();
}
long res = 0;
for(int i=0; i<n; i++) {
memoA[i][i] = a[i];
memoB[i][i] = b[i];
if(memoA[i][i] < memoB[i][i]) {
res +=1;
}
for(int j=i+1; j<n; j++) {
memoA[i][j] = Math.max(memoA[i][j-1], a[j]);
memoB[i][j] = Math.min(memoB[i][j-1], b[j]);
if(memoA[i][j] < memoB[i][j]) {
res +=1;
}
}
}
System.out.println(res);
}
}
不知道大家有没有什么更高效的解决方法
#题解##字节跳动##笔试题目#

