【LeetCode】4月4日打卡-Day20-接雨水
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode】4月4日打卡-Day20-接雨水
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。
上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水)。 感謝 Marcos 貢獻此圖。
示例:
輸入: [0,1,0,2,1,0,1,3,2,1,2,1]
輸出: 6
題解
思路:雙指針分別從左右兩邊遍歷,直到指針相遇。哪邊的當前高度比較小就更新哪邊,結果是左右兩邊遍歷下來最大高度和當前高度之差的總和。
class Solution {public int trap(int[] height) {if(height.length == 0){return 0;}int i = 0, j = height.length-1;int hl = height[i], hr = height[j];int ml = hl, mr = hr;int ans = 0;while(i <= j){if(hl >= hr){hr = height[j];mr = Math.max(hr,mr);if(hr < mr){ans += (mr-hr);}j--;}else{hl = height[i];ml = Math.max(hl,ml);if(hl < ml){ans += (ml-hl);}i++;}}return ans;} }總結
以上是生活随笔為你收集整理的【LeetCode】4月4日打卡-Day20-接雨水的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android官方开发文档Trainin
- 下一篇: Android官方开发文档Trainin