题解 | #接雨水问题#
接雨水问题
https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* max water
* @param arr int整型一维数组 the array
* @return long长整型
*/
public long maxWater (int[] arr) {
// write code here
int sum = 0;
int count = 1;
int i = 0;
int j = arr.length-1;
if(arr.length == 1)
return 0;
int min = arr[0] < arr[arr.length-1]?0:arr.length-1;
int max = arr[0] < arr[arr.length-1]?arr.length-1:0;
while(count != arr.length){//[6,4,2,0,3,2,0,3,1,4,5,3,2,7,5,3,0,1,2,1,3,4,6,8,1,3]
if(arr[i] < arr[j]){
i++;
if(arr[i]< arr[min]){
sum += arr[min] - arr[i];
}else if(arr[i] > arr[max]){
min = max;
max = i;
}else{
min = i;
}
}else{
j--;
if(arr[j] < arr[min]){
sum += arr[min] - arr[j];
}else if(arr[j] > arr[max]){
min = max;
max = j;
}else{
min = j;
}
}
count++;
}
return sum;
}
}
查看22道真题和解析