42.トラップ雨水経由のJava

ない論理プログラミングとアルゴリズムの問​​題では、より多くの謎のような難易度の嘘

左右2辺の中央に移動ポインタ、最大の両方を維持したまま

クラスソリューション{
     公共 int型トラップ(INT []高さ){
         場合(高さ== NULL || height.length <3 ){
             戻り 0; // 不可能このような状況では水を含むように
        } 
        
        int型 = 0左; //は左開始ポインタ
        INT右= height.length - 1。//は、右ポインタ開始
        INTを leftMax =高さ[左]。// 左にバインド
        int型 rightMax =高さ[右]。// 右にバインドされ
        int型の RES = 0 ;
        
        一方(左< 右){
             場合(高さ[左] <= 高さ[右]){
                 場合(高さ[左]> leftMax){ 
                    leftMax =高さ[左++ ]。
                } { 
                    RES + = leftMax -高さは、[左++ ]。
                } 
            } {
                 場合(高さ[右]> rightMax){ 
                    rightMax =高さ[right-- ]。
                } { 
                    RES+ = rightMax -高さ[right-- ]。
                } 
            } 
        } 
        戻りRES。
    } 
}

時間:O(N)

スペース:O(1)

おすすめ

転載: www.cnblogs.com/zg1005/p/11918606.html