算法记录 | Day58 单调栈

news/2024/10/18 8:30:47/

739.每日温度

思路:

1.首先,将答案数组 ans 全部赋值为 0。然后遍历数组每个位置元素。

2.如果栈为空,则将当前元素的下标入栈。

3.如果栈不为空,且当前数字大于栈顶元素对应数字,则栈顶元素出栈,并计算下标差。

4.此时当前元素就是栈顶元素的下一个更高值,将其下标差存入答案数组 ans 中保存起来,判断栈顶元素。

5.直到当前数字小于或等于栈顶元素,则停止出栈,将当前元素下标入栈。

6.最后输出答案数组 ans

class Solution:def dailyTemperatures(self, T: List[int]) -> List[int]:n = len(T)stack = []ans = [0 for _ in range(n)]for i in range(n):while stack and T[i] > T[stack[-1]]:index = stack.pop()ans[index] = (i-index)stack.append(i)return ans

496.下一个更大元素 I

思路:

1.情况一:当前遍历的元素T[i]小于栈顶元素T[st.top()]的情况

此时满足递增栈(栈头到栈底的顺序),所以直接入栈。

2.情况二:当前遍历的元素T[i]等于栈顶元素T[st.top()]的情况

如果相等的话,依然直接入栈,因为我们要求的是右边第一个比自己大的元素,而不是大于等于!

3.情况三:当前遍历的元素T[i]大于栈顶元素T[st.top()]的情况

此时如果入栈就不满足递增栈了,这也是找到右边第一个比自己大的元素的时候。

判断栈顶元素是否在nums1里出现过,(注意栈里的元素是nums2的元素),如果出现过,开始记录结果。

记录结果这块逻辑有一点小绕,要清楚,此时栈顶元素在nums2数组中右面第一个大的元素是nums2[i](即当前遍历元素)。

class Solution:def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:result = [-1]*len(nums1)stack = [0]for i in range(1,len(nums2)):# 情况一情况二if nums2[i]<=nums2[stack[-1]]:stack.append(i)# 情况三else:while len(stack)!=0 and nums2[i]>nums2[stack[-1]]:if nums2[stack[-1]] in nums1:index = nums1.index(nums2[stack[-1]])result[index]=nums2[i]stack.pop()                 stack.append(i)return result

http://www.ppmy.cn/news/64592.html

相关文章

JSP企业人事管理系统设计(源代码+论文)

随着计算机技术的飞速发展&#xff0c;计算机在企业管理中应用的普及&#xff0c;利用计算机实现企业人事管理势在必行。对于大中型企业来说&#xff0c;利用计算机支持企业高效率完成劳动人事管理的日常事务&#xff0c;是适应现代企业制度要求、推动企业劳动人事管理走向科学…

电子会议桌牌系统——基站版

一、产品特点 低功耗&#xff0c;常规使用3-5年电池寿命 支持空中唤醒&#xff0c;刷新快速&#xff0c;几秒钟内看到结果 点阵电子纸屏幕&#xff0c;视角接近180 基于Web的应用界面&#xff0c;支持跨平台操作 安装简单&#xff0c;快速布置 电池供电不需要布线 双面显…

【机器学习】P21 正则化 Regularization(L1正则化 Lasso、L2正则化 Ridge、弹性网络正则化、Dropout正则化、早停法)

既然模型有概率发生过拟合现象&#xff0c;那么如何才能减少过拟合&#xff0c;或者防止过拟合的产生&#xff1f;方法之一就是正则化方法&#xff0c;Regularization&#xff1b; 我对正则化&#xff0c;有这样的理解&#xff1a;“我们既希望能够通过权重的调整从而建立更好…

最近颁发的“吴文俊奖”,见证了中国AI走向产业之路

“任何足够先进的技术&#xff0c;初看起来都与魔法无异”——这是著名科幻作家克拉克总结的第三定律。 今年以来ChatGPT掀起的智能交互变革&#xff0c;大语言模型的智能涌现能力&#xff0c;在很多人眼里&#xff0c;真的就像魔法一样。 当然&#xff0c;大家心知肚明&#x…

devm_gpio_request_one 函数

Linux version: 4.14 Code link: Linux source code (v4.14) - Bootlin 1 devm_gpio_request_one 函数 int devm_gpio_request_one(struct device *dev, unsigned gpio,unsigned long flags, const char *label) {unsigned *dr;int rc;dr devres_alloc(devm_gpio_release, …

【k8s】离线部署方案二:搭建自主可控的软件仓库和镜像仓库(repo节点)

离线部署的两种方法&#xff1a; 方法一&#xff1a;直接将相关安装依赖包上传到各个节点方法二&#xff1a;搭建自主可控的软件仓库和镜像仓库&#xff08;repo节点&#xff09; 此篇主要记录方法二的实现步骤&#xff0c;参考思路如下&#xff1a; k8S之Centos离线安装_k8s离…

小灰的基金,亏了67W。。。

2022年基金市场有多差&#xff1f;相信大家都有目共睹。小灰的基金在去年也赔得很惨&#xff0c;还每次写过几篇文章&#xff1a; 跌吧&#xff0c;继续跌吧&#xff0c;小灰的基金已亏损64万。。。 基金亏损84万&#xff0c;小灰反手把银行客户经理投诉了 今年是疫情结束的第一…

“裸奔”时代下该如何保护网络隐私

随着信息技术的普及和发展&#xff0c;个人隐私和数据安全问题也日益受到威胁。“裸奔”时代下&#xff0c;我们该如何有效应对网络攻击、数据泄露和隐私侵犯&#xff0c;有哪些实用的技巧和工具可以帮助我们呢。欢迎大家一起讨论保护网络隐私的方法与策略。 一、引言 随着互联…