503.下一个更大元素II
代码随想录
初步思路:拼接两个一摸一样的数组,再使用单调栈的方法
总结:更高效的方法是在遍历的过程中模拟走了两边数组
dp = [-1] * len(nums)
stack = []
for i in range(len(nums)*2):
while(len(stack) != 0 and nums[i%len(nums)] > nums[stack[-1]]):
dp[stack[-1]] = nums[i%len(nums)]
stack.pop()
stack.append(i%len(nums))
return dp
用时:30分钟
42. 接雨水
代码随想录
初步思路:暴力解法
总结:稍微高效一点的方法是使用双指针
leftheight, rightheight = [0]*len(height), [0]*len(height)
leftheight[0]=height[0]
for i in range(1,len(height)):
leftheight[i]=max(leftheight[i-1],height[i])
rightheight[-1]=height[-1]
for i in range(len(height)-2,-1,-1):
rightheight[i]=max(rightheight[i+1],height[i])
result = 0
for i in range(0,len(height)):
summ = min(leftheight[i],rightheight[i])-height[i]
result += summ
return result
单调栈的解法一时还掌握不了,留着以后再学习。文章来源:https://uudwc.com/A/JwkE5
用时:60分钟文章来源地址https://uudwc.com/A/JwkE5