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 = 0for i in range(0,len(height)):summ = min(leftheight[i],rightheight[i])-height[i]result += summreturn result
单调栈的解法一时还掌握不了,留着以后再学习。
用时:60分钟