题解 | #接雨水问题#

接雨水问题

http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f

/**
 * max water
 * @param arr int整型一维数组 the array
 * @param arrLen int arr数组长度
 * @return long长整型
 */
long long maxWater(int* arr, int arrLen) {
    // write code here
    int i = 0;
    int tmp = 0;
    int j = 0;
    long long num = 0;
    int pos = -1;
    while (i<arrLen-1)
    {
        j = i + 1;
        for ( ; j<arrLen; j++)
        {

            if (arr[j]>tmp)
            {
                tmp = arr[j];
                pos = j;
            }
            if (arr[j] >= arr[i])
            {
                for (int n = i; n<j; n++)
                {
                    num = num + arr[i] - arr[n];
                    tmp = 0;
                }
                i = j;
                break;
            }


        }
        if (j >= arrLen)
        {
            j = i + 1;
            for (; j<pos; j++)
            {
                num = num + tmp - arr[j];


            }
            i = pos;
            tmp = 0;
        }
    }
    return num;

}
全部评论
这时间复杂度不是n吧?
点赞 回复 分享
发布于 2021-11-19 15:26

相关推荐

11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务