能收集雨水的地方肯定是两边都比他高的地方
#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 res = 0;
int l = 0;
int r = vec.size()-1;
while (l < r)
{
int mn = mint(vec[l], vec[r]);
if (mn == vec[r])
{
r–;
while (l < r && mn > vec[r])
{
res += mn-vec[r];
r–;
}
}
else
{
l++;
while (l < r && mn > vec[l])
{
res += mn-vec[l];
l++;
}
}
}
return res;
}
int main()
{
vector wator{ 0,1,0,2,1,0,1,3,2,1,2,1 };
cout << TrappingRainWater(wator) << endl;
system(“pause”);
return 0;
}
[LeetCode] Trapping Rain Water 收集雨水
最新推荐文章于 2021-07-10 12:29:29 发布