代码随想录算法训练营第四十九天|leetcode42. 接雨水、leetcode84.柱状图中最大的矩形
1 leetcode42. 接雨水
文章链接:代码随想录
视频链接:单调栈,经典来袭!LeetCode:42.接雨水_哔哩哔哩_bilibili
思路:就是说,我有些不理解,自己看的时候,不过看了视频以后,我貌似对我之前的方法,为什么不好,理解了
1.1 视频后的方法
思路在看视频的过程中,我确实是理解了呀,但是就是觉得,还是很绕其实,但是老师讲的很清晰,实话说
class Solution:
def trap(self, height: List[int]) -> int:
if len(height) <= 1:
return 0
result = 0
stack = [0]
for i in range(1,len(height)):
if height[i]<=height[stack[-1]]:
stack.append(i)
else:
while len(stack)!=0 and height[i]>height[stack[-1]]:
middle = stack[-1]
stack.pop()
if len(stack)!=0:
w = min(height[i],height[stack[-1]])-height[middle]
length = i-stack[-1]-1
result +=w*length
stack.append(i)
return result
1.2 本题小结
- 就是思路上面会有地方不理解吧,但是看的时候就很能理解为什么了,不过这道题目,我看思路都没看懂,就是说
- 然后就是一个,中间判断空的地方,这里会不定时的卡壳,希望慢慢的变好吧
2 leetcode84.柱状图中最大的矩形
题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode)
文章链接:代码随想录
视频链接:单调栈,又一次经典来袭! LeetCode:84.柱状图中最大的矩形_哔哩哔哩_bilibili
思路:根据之前的方法,我写了一下,不过好像有地方行不通,不能满足所有的条件,但是可以通过一丢丢吧
2.1 自己的方法
能测试通过十几个案例吧,但是不能通过所有的方法
class Solution:
def largestRectangleArea(self, heights: List[int]) -> int:
if len(heights)==1:
return heights[0]
result = 0
stack = [0]
for i in range(1,len(heights)):
if heights[i]<heights[stack[-1]]:
stack.append(i)
else:
while len(stack)!=0 and heights[i]>=heights[stack[-1]]:
w = heights[stack[-1]]
length = i-stack[-1]+1
stack.pop()
result = max(w*length,result)
stack.append(i)
return result
2.2 视频后的方法
其实跟之前还是挺像的吧,就是我想不到前后加0,但是看完讲解以后,就理解了,主打一个讲解驱动型的选手
class Solution:
def largestRectangleArea(self, heights: List[int]) -> int:
if len(heights)==1:
return heights[0]
heights.insert(0,0)
heights.append(0)
result = 0
stack = [0]
for i in range(1,len(heights)):
if heights[i]>=heights[stack[-1]]:
stack.append(i)
else:
while len(stack)!=0 and heights[i]<heights[stack[-1]]:
mid = stack[-1]
stack.pop()
if len(stack)!=0:
w = heights[mid]
length = i-stack[-1]-1
result = max(w*length,result)
stack.append(i)
return result
2.3 本题小结
- 主要就是开始,把递增递减弄错了,后面就是不理解为什么要加入0,然后自己慢慢尝试吧
- 还是很多时候,需要自己去写,自己去思考,虽然做完了,但是,理解程度上还是有必要加深很多的
3 今日小结
- 恭喜自己,又一次在哔站上面将整个系列的内容学习完成啦
- 虽然掌握的还不是很明白,但是我也想和自己说,加油,拖拉的很多课程,终于算是补起来了,接下来去尝试图论,自己去看啦

浙公网安备 33010602011771号