义乌免费做网站,我要发布招聘信息,中企动力做的网站容易SEO吗,网站美工培训课程503. 下一个更大元素 II 给定一个循环数组 nums #xff08; nums[nums.length - 1] 的下一个元素是 nums[0] #xff09;#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序#xff0c;这个数字之后的第一个比它更大的数 nums[nums.length - 1] 的下一个元素是 nums[0] 返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序这个数字之后的第一个比它更大的数这意味着你应该循环地搜索它的下一个更大的数。如果不存在则输出 -1 来源力扣LeetCode 链接https://leetcode.cn/problems/next-greater-element-ii 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 class Solution:def nextGreaterElements(self, nums: List[int]) - List[int]:n len(nums)res [-1]*n# 下一个更大元素-栈头到栈尾单调递增# 2*len 循环数组把这个数组拼接一下stack []for i in range(2*n):while(len(stack)!0 and nums[i%n]nums[stack[-1]]):res[stack[-1]] nums[i%n]stack.pop()stack.append(i%n)return res42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图计算按此排列的柱子下雨之后能接多少雨水。 class Solution:def trap(self, height: List[int]) - int:if len(height) 2:return 0stack []# 栈头到栈尾从小到大的顺序stack.append(0)sum_ 0for i in range(1,len(height)):# 情况1直接入栈if height[i]height[stack[-1]]:stack.append(i)elif height[i]height[stack[-1]]:# 因为相等的相邻墙左边一个是不可能存放雨水的所以pop左边的index, push当前indexstack.pop()stack.append(i)else:stackTop stack[-1]while (len(stack)!0 and height[i]height[stackTop]):# mid是凹槽底部mid stack.pop()if len(stack)!0:left stack[-1]# 左右墙最小高度减去凹槽高度h min(height[left] ,height[i])-height[mid]w i-left-1hold h*wif hold0:sum_ holdstackTop stack[-1]stack.append(i)return sum_