classSolution:defdailyTemperatures(self, temperatures: List[int])-> List[int]:n =len(temperatures)ans =[0]* nst =[]for i inrange(n -1,-1,-1):t = temperatures[i]while st and t >= temperatures[st[-1]]:st.pop()if st:ans[i]= st[-1]- ist.append(i)return ans
classSolution:defnextGreaterElement(self, nums1: List[int], nums2: List[int])-> List[int]:idx ={x: i for i, x inenumerate(nums1)}ans =[-1]*len(nums1)st =[]for x inreversed(nums2):while st and x >= st[-1]:# 由于 x 的出现,栈顶元素永远不会是左边元素的「下一个更大元素」st.pop()if st and x in idx:# x 在 nums1 中ans[idx[x]]= st[-1]# 记录答案st.append(x)return ans
classSolution:defnextGreaterElements(self, nums: List[int])-> List[int]:n =len(nums)ans =[-1]* nst =[]for i inrange(n *2-1,-1,-1):x = nums[i % n]while st and x >= st[-1]:# 由于 x 的出现,栈顶元素永远不会是左边元素的「下一个更大元素」st.pop()if st and i < n:ans[i]= st[-1]st.append(x)return ans