【数组】42. 接雨水
题目:

解答:

图解:

1 class Solution { 2 public: 3 int trap(vector<int>& height) 4 { 5 int ans = 0; 6 stack<int> st; 7 for (int i = 0; i < height.size(); i++) 8 { 9 while (!st.empty() && height[st.top()] < height[i]) 10 { 11 int cur = st.top(); 12 st.pop(); 13 if (st.empty()) 14 { 15 break; 16 } 17 int l = st.top(); 18 int r = i; 19 int h = min(height[r], height[l]) - height[cur]; 20 21 ans += (r - l - 1) * h; 22 } 23 st.push(i); 24 } 25 return ans; 26 } 27 };

浙公网安备 33010602011771号