题解 | #接雨水问题#

接雨水问题

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

全部评论

相关推荐

10-15 15:00
潍坊学院 golang
跨考小白:这又不是官方
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务