与えられた n個 の列の配置をクリックして算出した高さマップの各列の整数幅非負、それは雨の後に多くの雨を取ることができます。
上記配列[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
int型トラップ(INT *高さ、INT heightSize){ int型 ANS = 0 =トップ、 - 1 。 INT *スタック=(INT *)はmalloc(はsizeof(INT)* heightSize)。 以下のために(int型 iは= 0 ; I <heightSize iは++ ){ つつ - (トップ=!1つの &&高さが<トップ] [スタック] 高さ[I]){ int型 W1 =(トップ== 0?0身長[スタック。 [トップ- 1 ] -高さ[スタック[トップ])。 INT W2 =高さ[I] - 高さ[トップ] [スタック]。 int型、L =(トップ== 0?0:私は- [トップ-スタック1 ] - 1 )。 年間 + =のL * Fの分(W1、W2)。 トップ - ; } スタック[ ++トップ] = I; } 無料(スタック)。 戻るANSを。 }