题解 | #接雨水问题#
接雨水问题
https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
/**
* max water
* @param arr int整型一维数组 the array
* @param arrLen int arr数组长度
* @return long长整型
*/
#include <math.h>
#include <string.h>
long long maxWater(int* arr, int arrLen ) {
// write code here
int leftMax[arrLen];
int rightMax[arrLen];
int res = 0;
memset(leftMax, 0, sizeof(leftMax));
memset(rightMax, 0, sizeof(rightMax));
leftMax[0] = arr[0];
for(int i=1;i<arrLen;i++){
leftMax[i] = fmax(leftMax[i-1],arr[i]);
}
rightMax[arrLen-1] = arr[arrLen-1];
for(int j = arrLen-2;j>=0;j--){
rightMax[j] = fmax(rightMax[j+1], arr[j]);
}
for(int k=0;k<arrLen;k++){
res+=fmin(rightMax[k], leftMax[k]) - arr[k];
}
return res;
}
查看22道真题和解析