注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
TrappingRainWater问题参考答案中用堆栈解决的办法实在没有看到。求各位大神帮忙注释下:
class Solution { public: int trap(int a[], int n) { stack<pair<int, int>> s; int water = 0; for (int i = 0; i < n; ++i) { int height = 0; while (!s.empty()) { // 将栈里比当前元素矮或等高的元素全部处理掉 int bar = s.top().first; int pos = s.top().second; // bar, height, a[i] 三者夹成的凹陷 water += (min(bar, a[i]) - height) * (i - pos - 1); height = bar; if (a[i] < bar) // 碰到了比当前元素高的,跳出循环 break; else s.pop(); // 弹出栈顶,因为该元素处理完了,不再需要了 } s.push(make_pair(a[i], i)); } return water; } };
原本的注释感觉不够!!
|