艾恩凝
个人博客 https://aeneag.xyz/
公众号 技术乱舞
动态规划
题目链接
https://leetcode-cn.com/problems/trapping-rain-water/
题解
本题用动态规划解决,也不想用别的方法解决了,这个方法还可以优化,用双指针
//author : Aen
//blog : https://aeneag.xyz
//公众号 : 技术乱舞
class Solution {
public:
int trap(vector<int>& height) {
int n = height.size();
if (!n) return 0;
vector<int> leftMax(n),rightMax(n);
leftMax[0] = height[0];
rightMax[n - 1] = height[n - 1];
for (int i = 1,j = n-2; i < n, j >= 0; ++i,--j) {
leftMax[i] = max(leftMax[i - 1], height[i]);
rightMax[j] = max(rightMax[j + 1], height[j]);
}
int ans = 0;
for (int i = 0; i < n; ++i)ans += min(leftMax[i], rightMax[i]) - height[i];
return ans;
}
};
欢迎关注 #公众号:技术乱舞 一起交流