LeetCode #42 Trapping Rain Water
阿新 • • 發佈:2020-10-12
題目
解題思路
這題自己的思路沒做出來,想法是從0開始尋找下一個與它高度相等或更高的方塊,算出兩方塊圍出來的矩形的面積,再減去其中的方塊得到這一段的雨水,然後從這個更高或相等高度的方塊開始繼續找,若找到末尾就從這個方塊的下一個位置開始重新找,直到最後。
Failed case: 4, 2, 3
其實算是對暴力破解的改進的一次嘗試,整活沒整出來...
這題有暴力破解法,動態規劃法,棧法,雙指標法,雖然是個hard,但還是很經典的,具體力扣都有,就不再贅述了。
程式碼
暴力破解
class Solution: def trap(self, height: List[int]) -> int: trapped = 0 for i in range(len(height)): left_max, right_max = 0, 0 for j in range(i, -1, -1): left_max = max(left_max, height[j]) for j in range(i, len(height)): right_max = max(right_max, height[j]) trapped += min(left_max, right_max) - height[i] return trapped
動態規劃
棧
雙指標