【LeetCode - 42. 接雨水】
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode - 42. 接雨水】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
42. 接雨水
難度困難3164
給定?n?個非負整數表示每個寬度為?1?的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。
示例 1:
輸入: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
?解題報告:
維護前綴max和后綴max求解,空間復雜度是On的。
然后經典用雙指針優化空間復雜度到O1.
把這個題和zyb證明法的那個題結合起來看看,都是證明雙指針的正確性的。
AC代碼:
class Solution { public:/*** max water* @param arr int整型vector the array* @return long長整型*/long long maxWater(vector<int>& arr) {// write code hereint n = arr.size();vector<int> lmx(n+1,0), rmx(n+1,0);for(int i = 0; i<n; i++) {lmx[i] = max(lmx[i-1], arr[i]);}for(int i = n-1; i>=0; i--) {rmx[i] = max(rmx[i+1], arr[i]);}long long ans = 0;for(int i = 0; i<n; i++) {ans += min(lmx[i], rmx[i]) - arr[i];}return ans;} };總結
以上是生活随笔為你收集整理的【LeetCode - 42. 接雨水】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php让代码重新运行一次,脚本运行时是否
- 下一篇: 传染力较高 澳门传播毒株是BA5.1:尚