力扣演算法題 042接雨水

2022-06-04 05:51:07 字數 1703 閱讀 4676

1 #include"

000庫函式.h"2

//一點頭緒都沒有3//

然後就自己按自己的意思來一遍4//

好像沒有用演算法5//

16ms,讓我激動一把67

class

solution

24 t +=height[j];

25if (j == height.size() - 1) 30}

31 v += (s < e ? s : e)*(j - i - 1) - t;//

計算體積,記得減去中間的掠過體積

32 t = 0;//

下一步重新計算掠過的體積

33 i = j - 1;//

換過起始點(即終止點作為新的起始點)34}

35return

v;36}37

};38

39//

下面是看夠力扣題解之後的答案

40//

根據力扣上面的解題提示

41//

嘗試著做一下

42//

使用暴力法進行解答

43//

484ms

44class

solution

54for (int j = i; j < size; j++)

57 ans += min(max_left, max_right) -height[i];58}

59return

ans;60}

61};

62//

63//

64//

使用動態規劃20ms

65//

66class

solution

77 right_max[size - 1] = height[size - 1

];78

for (int i = size - 2; i >= 0; i--)

81for (int i = 1; i < size - 1; i++)

84return

ans;85}

86};

87//

88//

89//

使用堆疊法28ms

90//

91class

solution

106 st.push(current++);

107}

108return

ans;

109}

110};

111//

112//

使用雙指標法16ms

113//

114class

solution

125else

129}

130return

ans;

131}

132};

133134

135void

t042() ;

139 cout << s.trap(v) <140 v = ;

141 cout << s.trap(v) <142 v = ;

143 cout << s.trap(v) <144145

146 }

力扣第42題 接雨水

原文是帶著講解,過程還算詳細 上題是乙個對題目的舉例說明 本次解題中用這個圖 我認為這個圖涵蓋了可能出現的情況,講解會比較好一點 第一種方法是暴力法,時間複雜度為o n 2 空間複雜度為o 1 public inttrap02 int height int max right 0 找出右邊最高 fo...

力扣接雨水問題

思路是這樣的,先找到陣列中的最大值,然後在以他為中心,左右分割遍歷陣列,遞迴陣列,總是找最大值,計算 兩個最大值之間的存水量 最後彙總相加即可得出結果.package test public class testcasetwo int reuslt trapleft height,maxinx tr...

力扣 42 接雨水

題目 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos 貢獻此圖。示例 輸入 0,1,0,2,1,...