题解 | #接雨水问题#

接雨水问题

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

    stack=[]
    res = 0
    for i,num in enumerate(height):
        while stack and height[stack[-1]] < num:   
            out=stack.pop()
            if len(stack)==0:
                break
            # 取当前高度与栈顶高度的最小值 减去 刚才出栈的元素的高度,这才是边界的高度
            bounded_height= min(height[stack[-1]], num)-height[out]   
            res += bounded_height*(i-stack[-1]-1)     
        stack.append(i)
    return(res)
    
    #通过单调栈,把小于栈顶的pop出去,然后用两个边界的蓄水量减去pop出去的值就是凹槽的蓄水量
全部评论

相关推荐

03-27 20:14
前端工程师
投票
Spring启动:我在一嗨呆过,这么说吧 神仙单位,除了工资不怎么好 剩下的基本上天花板了,上班下班跟公务员似的,一天工作7个点,提供宿舍,宿舍离公司1km, 项目不着急,一般来说1天的活,你要个4天没人管你,我一天上班4个点在微信上跟别人聊天😂 去那边老自在了 但是也有可能是 我们组比较好
点赞 评论 收藏
分享
04-14 20:10
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务