Leetcode42. 接雨水
Posted y2823774827y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode42. 接雨水相关的知识,希望对你有一定的参考价值。
做法
考虑单独一列能生产多少贡献:用左右最大值去接这列的水
\(O(n)\)
Code
class Solution
public:
int mx[1000000],rx[1000000];
int trap(vector<int>& height)
int n(height.size());
// int mx(0);
for(int i=0;i<n;++i)
if(i==0) mx[i]=height[i];
else mx[i]=max(mx[i-1],height[i]);
int ans(0);
for(int i=n-1;i>=0;--i)
if(i==n-1) rx[i]=height[i];
else rx[i]=max(rx[i+1],height[i]);
ans+=min(rx[i],mx[i])-height[i];
/*int ans(0);
for(int i=0;i<n;++i)
ans+=min(rx[i],mx[i])-height[i];
*/
return ans;
;
以上是关于Leetcode42. 接雨水的主要内容,如果未能解决你的问题,请参考以下文章