已解决
代码随想录 Day - 61|#503 下一个更大元素 II|#42 接雨水
来自网友在路上 182882提问 提问时间:2023-10-09 14:03:08阅读次数: 82
最佳答案 问答题库828位专家为你答疑解惑
清单
● 503.下一个更大元素II
● 42. 接雨水
LeetCode #503 下一个更大元素II
1. 题目
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。
2. 思路
此处为循环数组,在 #496 下一个更大元素 I 的思路上,通过增加遍历次数(多遍历一次数组)达到最小循环数组目的
3. 代码实现
class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:n = len(nums)answer = [-1] * nstack = []for i in range(2 * n):while stack and nums[i % n] > nums[stack[-1]]:answer[stack.pop()] = nums[i % n]stack.append(i % n)return answer
LeetCode #42 接雨水
1. 题目
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
2. 思路
- 双指针法:
- 从左往右看时,能够接住的雨水为sum(当前侧的最高高度 - 遍历数组元素)
- 同理,从右向左看时,接住的雨水为sum(当前侧的最高高度 - 遍历数组元素)
- 创建 L_height / R_height 用于记录左指针和右指针遍历数组时的最高高度
- 遍历数组,记录 sum = max( L_height[i], R_height[i]) - height[i])
- 单调栈:
- 当遍历元素小于栈顶元素时,入栈
- 当遍历元素等于栈顶元素时(高度相同),弹出当前栈顶元素,记录当前遍历元素(更新脚标)
- 当遍历元素大于栈顶元素时,弹出当前栈顶元素, 计算接住雨水量
- 新增一个result用于记录所有雨水量之和
3. 代码实现
class Solution:def trap(self, height: List[int]) -> int:stack = [0] #记录脚标result = 0for i in range(1,len(height)):if height[i] < height[stack[-1]]:stack.append(i)elif height[i] == height[stack[-1]]:stack.pop()stack.append(i)else:while stack and height[i] > height[stack[-1]]:mid_height = height[stack[-1]]stack.pop()if stack: #确保stack不为空L_height = height[stack[-1]]R_height = height[i]H = min(L_height, R_height) - mid_heightW = i - stack[-1] - 1result += H * Wstack.append(i)return result
查看全文
99%的人还看了
相似问题
- 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
- CSS中常用的伪元素选择器
- XmlElement注解在Java的数组属性上,以产生多个相同的XML元素
- Web 自动化神器 TestCafe(二)—元素定位篇
- 代码随想录算法训练营第一天|数组理论基础,704. 二分查找,27. 移除元素
- 代码随想录算法训练营第五十九天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
- JAXB:用XmlElement注解复杂类型的Java属性,来产生多层嵌套的xml元素
- Arcgis js Api日常天坑问题3——加载geojson图层,元素无属性
- 〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点
- 力扣.82删除链表中的重复元素(java语言实现)
猜你感兴趣
版权申明
本文"代码随想录 Day - 61|#503 下一个更大元素 II|#42 接雨水":http://eshow365.cn/6-17830-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 又一家芯片新势力杀入车载领域
- 下一篇: Android 属性动画ValueAnimator整理