-
好难的一道题目啊,不看图片不知道什么意思
-
#include
#include
using namespace std;
int maxt(int a, int b)
{
if (a > b)
{
return a;
}
return b;
}
int mint(int a, int b)
{
if (a < b)
{
return a;
}
return b;
}
int TrappingRainWater(vector &vec)
{
int wator = 0;
for (int i = 1; i < vec.size()-1; i++)
{
int maxleft = 0;
int maxright = 0;
for (int j = i; j >= 0; j–)
{
maxleft = maxt(maxleft, vec[j]);
}
for (int j = i; j<vec.size(); j++)
{
maxright = maxt(maxright, vec[j]);
}
int maxnum = mint(maxleft, maxright)-vec[i];
if (maxnum > 0)
{
wator += maxnum;
}}
return wator;
}
int TrappingRainWaterT(vector &vec)
{
vector dp(vec.size(),0);
int max = 0;
int res = 0;
for (int i = 0; i < vec.size(); i++)
{
dp[i] = max;
max = maxt(max, vec[i]);
}
max = 0;
for (int i = vec.size() - 1; i >= 0; i–)
{
dp[i] = mint(dp[i], max);
max = maxt(max, vec[i]);
if (dp[i] > vec[i])
{
res += dp[i] - vec[i];
}
}
return res;
}
int main()
{
vector wator{ 0,1,0,2,1,0,1,3,2,1,2,1 };
cout << TrappingRainWaterT(wator) << endl;
system(“pause”);
return 0;
}
[LeetCode] Trapping Rain Water 收集雨水
最新推荐文章于 2020-11-17 16:12:24 发布