头条第四题解法探讨
// 我的思路是维护一个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); } }
不知道大家有没有什么更高效的解决方法
#题解##字节跳动##笔试题目#