503.下一个更大元素II
- 由于刚做完#496.下一个更大元素 I,第一反应就是可以把当前数组作为#496里的nums1数组,然后创造一个nums2 = nums1*2,然后就跟#496一样了。
- 这样是有问题的:#496规定元素不可重复!
- 思路没问题,只是这道题与#739更加接近
class Solution:
def nextGreaterElements(self, nums: List[int]) -> List[int]:
ans = [-1]*len(nums)
stack = [0]
for i in range(len(nums)*2):
#三种情况:
if nums[i % len(nums)] <= nums[stack[-1]]:
stack.append(i % len(nums))
else:
while len(stack) > 0 and nums[i % len(nums)] > nums[stack[-1]]:
ans[stack[-1]] = nums[i % len(nums)]
stack.pop()
stack.append(i % len(nums))
return ans
42. 接雨水(hard)
目前先掌握双指针解法就行
84.柱状图中最大的矩形(hard)
先放一放。。。