leetcode C++ 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,
生活随笔
收集整理的這篇文章主要介紹了
leetcode C++ 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、思路:
? ? 左邊最高和右邊最高求一個最小值減去當前高度,就等于當前能裝的水的量
二、代碼:
class Solution { public:int getMaxRight(vector<int>& height, int index) {int maxRight = 0;for (; index < height.size(); index++) {if (height[index] > maxRight)maxRight = height[index];}return maxRight;}int trap(vector<int>& height) {int res = 0;int rightMax = getMaxRight(height, 1), leftMax = 0;for (int i = 0; i < height.size(); i++)if (rightMax < height[i])rightMax = height[i];for (int i = 0; i < height.size(); i++){if (height[i] > leftMax)leftMax = height[i];if (height[i] == rightMax)rightMax = getMaxRight(height, i + 1);int diff = min(leftMax, rightMax) - height[i];res += (diff > 0 ? diff : 0);}return res;} };?
總結
以上是生活随笔為你收集整理的leetcode C++ 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode C++ 39. 组合总
- 下一篇: leetcode C++ 23. 合并K