题解 | #接雨水问题#

接雨水问题

https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f?tpId=295&tqId=1002045&ru=/exam/intelligent&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Fintelligent%3FquestionJobId%3D10

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# max water
# @param arr int整型一维数组 the array
# @return long长整型
#
class Solution:
    def maxWater(self, arr: list[int]) -> int:
        # write code here
        left= 0
        right = len(arr) - 1
        v=0
        #左边和右边递增的时候都不考虑,移动指针
        while left <right and arr[left+1]>=arr[left]:
                left+=1

        while left<right and  arr[right-1]>=arr[right] :
                right-=1


        #height=min(left,right)

        while left <right:
            leftvalue=arr[left]
            rightvalue=arr[right]
			#当左边的值比右边的值小时,把左边的指针向右移动,如果arr[left]大于leftvalue,将leftvalue的值更新为该left,继续比较
            if leftvalue <=rightvalue:
                while left<right and  leftvalue >=arr[left]:
                    v+=leftvalue-arr[left]
                    left+=1
            else:
			 # 右指针类似
                while left<right and rightvalue >=arr[right]:
                    v+=rightvalue-arr[right]
                    right-=1

            
        
        return v

全部评论

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
重生2012之我是java程序员:换个稍微正式点的照片吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务