class Solution {
public:
int trap(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> left(n);
vector<int> right(n);
for (int i = 1; i < n; i++) {
left[i] = max(left[i - 1], A[i - 1]);
}
for (int i = n - 2; i >= 0; i--) {
right[i] = max(right[i + 1], A[i + 1]);
}
int ret = 0;
for (int i = 0; i < n; i++) {
int minVal = min(left[i], right[i]);
if (minVal > A[i])
ret += minVal - A[i];
}
return ret;
}
};
Small Case: 8ms
Large Case: 52ms
Time: O(n)
Space: O(n)