42 接雨水 leetcode

給定 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

相關文章
相關標籤/搜索