42. 接雨水
思路: 接水的值=min(左边最大,右边最大)-height[i]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Solution { public: //思路:ans += min(left, right)-height[i] int trap(vector<int>& height) { int size = height.size(); if(size==0) return 0; vector<int> left(size,height[0]), right(size,height[size-1]); for(int i=1;i<size;i++) left[i] = max(left[i-1], height[i]); for(int i=size-2;i>=0;i--) right[i] = max(right[i+1], height[i]); int res = 0; for(int i=0;i<size;i++) res += min(left[i], right[i])-height[i]; return res; } }; |