网站建设分项报价表,襄阳集团网站建设,多种语言网站怎么做,如何找推广平台1.题目链接#xff1a;下一个更大元素 II
题目描述#xff1a; 给定一个循环数组 nums #xff08; nums[nums.length - 1] 的下一个元素是 nums[0] #xff09;#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序#…1.题目链接下一个更大元素 II
题目描述 给定一个循环数组 nums nums[nums.length - 1] 的下一个元素是 nums[0] 返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序这个数字之后的第一个比它更大的数这意味着你应该循环地搜索它的下一个更大的数。如果不存在则输出 -1 。
解法 其实本题的解法和裸的单调栈是一样的不同的地方就是他是一个环型的数组。我们可以将数组长度变成两倍然后将值都求出来最后取前三个值。也可以不用将所有的值都求出来我们只需要将i取模操作就可以模拟成环的过程。所以不同的地方就是遍历从0到length×2i变成i%length。
下面为代码java 2.题目链接42. 接雨水
题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图计算按此排列的柱子下雨之后能接多少雨水。
解法 ①本题有两种解法一种双指针一种单调栈这里只用了双指针。 ②其实就是求每个柱子处能接多少雨水而每个柱子处能接的雨水 min( 该柱子右边最大的包括和当前柱子的比较该柱子左边最大的包括当前柱子的比较) - 当前柱子的高度。注意能接到水肯定要形成漏斗所以长度小于等于2的时候肯定接不到水直接返回0. ③要注意的是在求右边的时候根据的是后面的值求的所以遍历顺序是从后到前。 ④在求左边的时候根据的是前面的值求的所以遍历顺序是从前到后。 ⑤最后将每个柱子能接的雨水求和即可。
下面为代码java 3.总结 ①环形的单调栈问题想到取模。 ②求雨水问题双指针解法min左边最大右边最大- 当前高度。要注意遍历顺序。单调栈写法二刷再来。