题解 | #接雨水问题#

接雨水问题

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出去的值就是凹槽的蓄水量
全部评论

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务