代码随想录算法训练营Day 57| 单调栈part01 |739. 每日温度、496.下一个更大元素 I
739. 每日温度
题目链接
一、单调栈-单调递增
class Solution(object):
def dailyTemperatures(self, temperatures):
"""
:type temperatures: List[int]
:rtype: List[int]
"""
stack=[]
res=[0]*len(temperatures)
for i in range(len(temperatures)):
while len(stack)!=0 and temperatures[i]>temperatures[stack[-1]]:
res[stack[-1]]=i-stack[-1]
stack.pop()
stack.append(i)
return res
496.下一个更大元素 I
题目链接
一、单调栈
stack=[]
res=[-1]*len(nums1)
for i in range(len(nums2)):
while len(stack) != 0 and nums2[i]>nums2[stack[-1]]:
if nums2[stack[-1]] in nums1:
index=nums1.index(nums2[stack[-1]])
res[index]=nums2[i]
stack.pop()
stack.append(i)
return res
二、暴力
class Solution(object):
def nextGreaterElement(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
res=[-1]*len(nums1)
for i in range(len(nums1)):
if nums1[i] in nums2:
index=nums2.index(nums1[i])
for j in range(index,len(nums2)):
if nums2[j]>nums2[index]:
res[i]=nums2[j]
break
return res