题解 | #接雨水问题#
接雨水问题
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; }