题解 | #接雨水问题#
接雨水问题
https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
public long maxWater (int[] arr) {
int L = 0;
int R = arr.length-1;
int res = 0;
while(L<arr.length-1 && arr[L]<arr[L+1]) L++;
while(R>0 && arr[R]<arr[R-1]) R--;
int maxL = arr[L];
int maxR = arr[R];
int max = 0;
int index = 0;
for(int i = L; i<=R; i++){
if(arr[i]>max) {
index = i;
max = arr[i];
}
}
for(int i = L; i<=index; i++){
if(arr[i] >= maxL){
maxL = arr[i];
}else{
res+=Math.min(maxL,arr[index])-arr[i];
}
}
for(int i = R; i>=index; i--){
if(arr[i] >= maxR){
maxR = arr[i];
}else{
res+=Math.min(maxR,arr[index])-arr[i];
}
}
return res;
}
OPPO公司福利 1114人发布
查看12道真题和解析