您的位置:首页 > 移动开发

LeetCode-Trapping Rain Water

2013-08-03 20:57 375 查看
class Solution {
public:
int trap(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> leftMax;
vector<int> rightMax;
int curMax = 0;
//leftMax[i]保存A[i]左侧中最大的数
for (int i = 0; i < n; ++i)
{
leftMax.push_back(curMax);
curMax = max(curMax, A[i]);
}
curMax = 0;
//rightMax[i]保存A[i]右侧中最大的数
for (int i = n - 1; i >= 0; --i)
{
rightMax.insert(rightMax.begin(), curMax);
curMax = max(curMax, A[i]);
}
int ans = 0;
//i处能储存的水的容量相当于A[i]左侧和右侧中较小的柱子高度与A[i]之差
for (int i = 0; i < n; ++i)
{
int minMax = min(leftMax[i], rightMax[i]);
int diff = minMax - A[i];
ans += diff < 0 ? 0 : diff;
}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: