题解 | #接雨水问题#

接雨水问题

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

全部评论

相关推荐

07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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