注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
我看了半天,看不出问题在哪就是最后一个test case 过不了- class Solution {
- int MOD = 1000_000_007;
- public int sumSubarrayMins(int[] A) {
- return sumMins(A,0,A.length-1);
- }
- private int sumMins(int[] A, int s, int e){
- if(s>e)
- return 0;
- if(s == e)
- return A[s];
- int minIdx = -1 , min = Integer.MAX_VALUE;
- for(int i =s; i<= e;i++){
- if(min > A[i]){
- minIdx = i;
- min = A[i];
- }
- }
- System.out.println("s: "+s +" e: "+e + " min: "+min);
- int N = e - s + 1, l = minIdx - s, r = e - minIdx;
- int containMin = (int) ((f(N) - f(l) - f(r)) * min);
- // System.out.println("minIdx "+ minIdx +" s: "+s +" e: "+e + " contain min : "+containMin);
- return (containMin + sumMins(A,s,minIdx-1) + sumMins(A,minIdx+1,e))%MOD;
- }
- private int f(int i){
- return i*(i+1)/2;
- }
- }
复制代码
|