給定 n 個非負整數表示每一個寬度爲 1 的柱子的高度圖,計算按此排列的柱子,下雨以後能接多少雨水。web
上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種狀況下,能夠接 6 個單位的雨水(藍色部分表示雨水)。 感謝 Marcos 貢獻此圖。數組
示例:svg
輸入: [0,1,0,2,1,0,1,3,2,1,2,1]
輸出: 6
批註:雖然leetcode上標註爲hard,但只要把過程想清楚,實現起來其實很簡單。.net
下面是一個直接的方法:
分析每一列,當左邊且右邊的最大的列大於這一列時,這一列上纔可能存水。code
class Solution { public: int trap(vector<int>& height) { int coun=0; for(int i=1;i<height.size();i++) { int max_left=0; int max_right=0; for(int j=0;j<i;j++) max_left=height[j]>max_left?height[j]:max_left; for(int j=i+1;j<height.size();j++) max_right=height[j]>max_right?height[j]:max_right; if(max_left<=height[i]||max_right<=height[i]) coun+=0; else coun+=(min(max_right,max_left)-height[i]); }return coun; } };
本文分享 CSDN - 希境。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。xml