题解 | #接雨水问题#

接雨水问题

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

#
# max water
# @param arr int整型一维数组 the array
# @return long长整型
#三指针解决接雨水问题
#1.找到数组中最大值的下标
#2.left和right从最大值下标的左边开始数
#2.1 如果left<=right  没有雨水  让left=right
#2.2 如果left>right  有雨水  arr[left]-arr[right]
#2.3 right+=1
#2.4 右边同样的做法

class Solution:
    def maxWater(self , arr ):
        # write code here
        top=arr.index(max(arr))
        left=0
        right=1
        water=0
        while right<=top:
            if arr[left]<=arr[right]:
                left=right
            else:
                water=water+arr[left]-arr[right]
            right+=1
            
        right=len(arr)-1
        left=right-1
        while left>=top:
            if arr[left]>=arr[right]:
                right=left
            else:
                water=water+arr[right]-arr[left]
            left-=1
        return water
全部评论

相关推荐

06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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