<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      LC42 接雨水


      1 題目

      給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。

      示例 1:

      img

      輸入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
      輸出:6
      解釋:上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水)。 
      

      示例 2:

      輸入:height = [4,2,0,3,2,5]
      輸出:9
      

      提示:

      • n == height.length
      • 1 <= n <= 2 * 104
      • 0 <= height[i] <= 105

      2 解答

      1 雙指針

      class Solution:
          def trap(self, height: List[int]) -> int:
              
              # 2 雙向指針
              n = len(height)
              right = n - 1
              left = 0
              pre_max = height[left]
              sur_max = height[right]
              ans = 0
              while left<right:
                  # 如果前綴最大值小于后綴最大值,則接到的水就是前綴最大值減去本身的高度
                  if pre_max < sur_max :
                      ans += pre_max - height[left]
                      left += 1
                      pre_max = max(pre_max, height[left])
                      
                  # 如果后綴最大值小于前綴最大值,則接到的水就是后綴最大值減去其本身的高度
                  if pre_max >= sur_max:
                      ans += sur_max - height[right]
                      right -= 1
                      sur_max = max(sur_max , height[right])
              return ans
      

      前后綴解方

      class Solution:
          def trap(self, height: List[int]) -> int:
              # 1. 左右最高的最小減去本身即可
              n = len(height)
              pre_max = [0]*n
              sur_max = [0]*n
              pre_max[0] = height[0]
              sur_max[n-1] = height[n-1]
              ans = 0
              # 前綴最大值
              for i in range(1 , n , 1):
                  pre_max[i] = max(height[i] , pre_max[i-1])
                  
              # 后綴最大值
              for j in range(n-2 , -1 , -1):
                  sur_max[j] = max(height[j] , sur_max[j+1])
                  
              # 求解
              for i in range(0 , n , 1):
                  ans += min(pre_max[i] , sur_max[i]) - height[i]
              return  ans
      
      posted @ 2025-08-26 09:34  AxonoSensei  閱讀(5)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品国三级国产av| 免费一区二三区三区蜜桃| 四虎影视一区二区精品| 噜噜综合亚洲av中文无码| 国产婷婷精品av在线| 深夜av在线免费观看| 性无码一区二区三区在线观看| 激情在线网| 国产精品国产精品偷麻豆| 亚洲国产午夜精品理论片在线播放| 成人国产精品中文字幕| 精品无码久久久久国产动漫3d| 国产美女高潮流白浆视频| 山丹县| 久久精品一区二区三区av| 久久综合久色欧美综合狠狠| 五月综合激情婷婷六月| 中文字幕在线精品国产| 午夜av高清在线观看| 久久国产精品色av免费看| 饥渴的熟妇张开腿呻吟视频| 精品国产第一国产综合精品| 亚洲日本VA午夜在线电影| 无码国产偷倩在线播放| 亚洲夜夜欢一区二区三区| 天天爽夜夜爽人人爽一区二区| 人妻有码av中文字幕久久琪| 国产 麻豆 日韩 欧美 久久| 日韩免费码中文在线观看| 深夜释放自己在线观看| 中文国产成人精品久久不卡| 国产精品国产三级国产专业| 国产精品久久久久久av| 在线天堂中文新版www| 成人av一区二区三区| 亚洲线精品一区二区三八戒| 国产二区三区不卡免费| 中文人妻av高清一区二区| 亚洲综合久久精品哦夜夜嗨| 亚洲一区av无码少妇电影| 久久精品女人天堂av免费观看|