leetcode42 接雨水
Posted Joel_Wang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode42 接雨水相关的知识,希望对你有一定的参考价值。
答案参考:https://www.zhihu.com/people/cxyxiaowu/activities
time O(n) space O(1):
双指针法,计算的中心思想为:
左右(包括自身)最低的柱子决定能装多少水,装水的体积为 water_i = min { l_max, r_max } - height[i];
然后结合双指针法进行计算,
class Solution { public: int trap(vector<int>& height) { int n = height.size(); int left=0; int right=n-1; int l_max=0; int r_max=0; int ans=0; while(left<right){ l_max=max(l_max,height[left]); r_max=max(r_max,height[right]); if(l_max<r_max){ ans+=l_max-height[left++]; }else{ ans+=r_max-height[right--]; } } return ans; } };
以上是关于leetcode42 接雨水的主要内容,如果未能解决你的问题,请参考以下文章