题解 | #接雨水问题#

接雨水问题

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;

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务