代码随想录算法训练营|五十九~六十天

下一个更大元素||

503. 下一个更大元素 II - 力扣(LeetCode)

和每日温度一样的套路,就是这里可以循环数组,两个数组拼接,然后循环两遍就行。

public class Solution {public int[] NextGreaterElements(int[] nums) {int leng = nums.Length;int[] result = new int[leng];for(int i=0;i<result.Length;i++)result[i] = -1;if (leng == 0) return result;Stack<int> st = new Stack<int>();st.Push(0);for (int i = 1; i < leng * 2; i++) {if (nums[i % leng] < nums[st.Peek()]) st.Push(i % leng);else if (nums[i % leng] == nums[st.Peek()]) st.Push(i % leng);else {while (st.Count > 0 && nums[i % leng] > nums[st.Peek()]) {result[st.Peek()] = nums[i % leng];st.Pop();}st.Push(i % leng);}}return result;}
}

接雨水

42. 接雨水 - 力扣(LeetCode)

双指针法,例如i=4,然后从i开始向左右遍历直到找到左右的最高点,再找到左右的最小值减去i的高得到多少个容纳单位。

单调栈,也和每日温度一样三种情况,如果数组[i]的元素和栈头相同,得先弹出栈内元素再压入,因为最后求最高值是相同元素取最右边的元素,左边用不到;如果大于,取栈头做mid,然后取左右两遍的最小值做高,宽度是i-栈头(不是mid,mid已经弹出)-1,最后相乘就是容积。

双指针
public class Solution {public int Trap(int[] height) {int sum = 0;for(int i=0;i<height.Length;i++){if(i==0 || i==height.Length-1)continue;int lheight = height[i];int rheight = height[i];for(int l=i-1;l>=0;l--){if(lheight < height[l]) lheight=height[l];}for(int r=i+1;i<height.Length;r++){if(rheight < height[i]) rheight=height[r];}int h = Math.Min(lheight,rheight) - height[i];if(h>0)sum+=h;}return sum;}
}单调栈
public class Solution {public int Trap(int[] height) {Stack<int> stack = new Stack<int>();int sum = 0;stack.Push(0);for(int i=1;i<height.Length;i++){if(height[i]<height[stack.Peek()]){stack.Push(i);}else if(height[i] == height[stack.Peek()]){stack.Pop();stack.Push(i);}else{while(stack.Count > 0 && height[i]>height[stack.Peek()]){int mid = stack.Pop();if(stack.Count > 0){int h = Math.Min(height[stack.Peek()],height[i])-height[mid];int w = i-stack.Peek()-1;sum+= h*w;}}stack.Push(i);}}return sum;}
}

柱状图中最大的矩形

84. 柱状图中最大的矩形 - 力扣(LeetCode)

这题主要得注意数组前后都要加上0,如果没加上0,数组元素循环到栈内会一直跳过情况三,具体看代码随想录。

public class Solution {public int LargestRectangleArea(int[] heights) {Stack<int> stack = new Stack<int>();int sum = 0;stack.Push(0);int[] newheights = new int[heights.Length+2];Array.Copy(heights,0,newheights,1,heights.Length);newheights[0] = 0;newheights[newheights.Length-1] = 0;for(int i=1;i<newheights.Length;i++){if(newheights[i] > newheights[stack.Peek()]){stack.Push(i);}else if(newheights[i] == newheights[stack.Peek()]){stack.Pop();stack.Push(i);}else{while(stack.Count > 0 && newheights[i] < newheights[stack.Peek()]){int mid = stack.Pop();if(stack.Count > 0){int left = stack.Peek();int right = i;int w = right-left-1;int h = newheights[mid];sum = Math.Max(sum,h*w);}}stack.Push(i);}}return sum;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/200898.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis之主从复制和哨兵模式

&#xff08;一&#xff09;redis的性能管理 1、redis的数据缓存在内存中 2、查看redis的性能&#xff1a;info memory&#xff08;重点&#xff09; used_memory:904192&#xff08;单位字节&#xff09; redis中数据占用的内存 used_memory_rss:10522624 redis向操作系统…

asp.net mvc点餐系统餐厅管理系统

1. 主要功能 ① 管理员、收银员、厨师的登录 ② 管理员查看、添加、删除菜品类型 ③ 管理员查看、添加、删除菜品&#xff0c;对菜品信息进行简介和封面的修改 ④ 收银员浏览、搜索菜品&#xff0c;加入购物车后进行结算&#xff0c;生成订单 ⑤ 厨师查看待完成菜品信息…

文心一言 VS 讯飞星火 VS chatgpt (140)-- 算法导论11.4 5题

五、用go语言&#xff0c;考虑一个装载因子为a的开放寻址散列表。找出一个非零的a值&#xff0c;使得一次不成功查找的探查期望数是一次成功查找的探查期望数的 2 倍。这两个探查期望数可以使用定理11.6 和定理 11.8 中给定的上界。 文心一言&#xff0c;代码正常运行&#xf…

铸就匠心,打造西部最具权威的行业商会组织

中国商报陕西报道&#xff08;记者 朱清平&#xff09;西安市五金机电商会(以下简称商会)第二届一次会员代表大会暨新任理事、监事就职典礼于11月17日在西安经开洲际酒店召开。 商会于2018年10月成立,在5年的发展中,依托“一带一路”发展的“快车道”,通过新丝路国际工业品数字…

分享给自媒体人:做自媒体最好的心态

做自媒体路上的两大修行&#xff1a; 一是状态不好的时候&#xff0c;明知道停更会掉流量&#xff0c;依然可以毫不焦虑地躺平; 二是发的东西没人看&#xff0c;坚持更新也没流量&#xff0c;却依然可以坚定地做自己。 做号这件事&#xff0c;就是一分耕耘一分收获的。 可能有人…

感恩节的习俗 Custom of Family Dinner

感恩节是美国最普遍庆祝的传统节日之一。在每年11月的第四个星期四&#xff0c;感恩节如期而至。Thanksgiving is one of the most universally celebrated traditional American holidays. Every year, Thanksgiving arrives on the fourth Thursday of November without fail…

如何写老客户开发信?维护客户邮件怎么写?

老客户开发信的写作技巧&#xff1f;针对老客户的营销邮件模板&#xff1f; 老客户开发信是维护和发展客户关系的关键工具之一。通过巧妙的信函&#xff0c;您可以巩固与老客户之间的联系&#xff0c;促使他们继续购买您的产品或服务。在本文中&#xff0c;蜂邮将分享一些建议…

汇编基础知识

1.1 机器语言 机器语言就是一些二进制代码&#xff0c;存放在内存中。它是机器指令的集合&#xff0c;所谓机器指令就是机器能够正确执行的命令 1.2 汇编语言的产生 1.汇编语言的主体是汇编指令 2.汇编指令实际上就是机器指令的助记符。它们的唯一区别在于书写方式上 寄存器…

VB.net读写S50/F08IC卡,修改卡片密码控制位源码

本示例使用设备&#xff1a;Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) 函数声明 Module Module1读卡函数声明Public Declare Function piccreadex Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByRef serial As Byte, …

翻译软件Mate Translate mac中文版介绍说明

Mate Translate mac可以帮你翻译超过100种语言的单词和短语&#xff0c;使用文本到语音转换&#xff0c;并浏览历史上已经完成的翻译。你还可以使用Control S在弹出窗口中快速交换语言。 Mate Translate Mac版软件介绍 Mate Translate 可以在你的所有设备之间轻松同步&#x…

处理无线debug问题

无限debug的产生 条件说明 开发者工具是打开状态 js代码中有debugger js有定时处理 setInterval(() > {(function (a) {return (function (a) {return (Function(Function(arguments[0]" a ")()))})(a)})(bugger)(de, 0, 0, (0, 0)); }, 1000); ​ #这里就…

关键性进展! 小米造车露真容 预计明年上市

大家好,我是极智视界,欢迎关注我的公众号,获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 小米在各种不同的产品上都在不断打上自己的品牌,这绝对不止于智能手机,而是有智能…

el-form动态表单动态验证(先验证不为空,再验证长度在20以内,最后向后台发送请求验证账号是否重复)

data(){var checkSno (rule, value, callback) > {if (!value) {callback(new Error("请输入账号"));} else if (value.length > 20) {callback(new Error("长度为1-20"));} else {if (this.form.id) {// 修改时检查账号是否重复selectLoginId({ sn…

JSP EL表达式基本使用

今天我们来说EL表达式 这在整个jsp中都是非常重要的一章 因为 如果我们用 <%属性%> 属性为空时 直接就是个 null 这个肯定是不能让用户看到的东西 所以 我们就需要EL表达式 例如 我们jsp代码编写如下 <% page contentType"text/html; charsetUTF-8" page…

怎么批量提取文件名字到Excel中?

怎么批量提取文件名字到Excel中&#xff1f;Excel是由微软公司开发的一种电子表格软件&#xff0c;它是Microsoft Office办公套件的一部分。Excel提供了强大的数据处理和分析功能&#xff0c;用户可以使用Excel创建、编辑和管理电子表格&#xff0c;进行各种计算、数据分析、图…

【5k字长文 | Vue学习笔记】#1 认识Vue对象和基础语法

Vue是一个非常流行的渐进式JavaScript框架&#xff0c;渐进式指的是自底向上&#xff0c;从小组件逐渐向上构成整个项目&#xff0c;渐进式还可以理解为&#xff1a;用什么就拿什么&#xff0c;每个组件只做自己的事&#xff0c;尽可能解耦合。 本节我们将学习简单的Vue实例&a…

线性代数 - 几何原理

目录 序言向量的定义线性组合、张成空间与向量基线性变换和矩阵线性复合变换与矩阵乘法三维空间的线性变换行列式矩阵的秩和逆矩阵维度变换点乘叉乘基变换特征值和特征向量抽象向量空间 序言 欢迎阅读这篇关于线性代数的文章。在这里&#xff0c;我们将从一个全新的角度去探索线…

机器学习第10天:集成学习

文章目录 机器学习专栏 介绍 投票分类器 介绍 代码 核心代码 示例代码 软投票与硬投票 bagging与pasting 介绍 核心代码 随机森林 介绍 代码 结语 机器学习专栏 机器学习_Nowl的博客-CSDN博客 介绍 集成学习的思想是很直观的&#xff1a;多个人判断的结合往往比…

家政保洁预约小程序app开发特点有哪些?

家政预约服务小程序APP开发的特点介绍&#xff1b; 1. 低成本&#xff1a;用户通过手机APP下单&#xff0c;省去了中介费用&#xff0c;降低了雇主的雇佣成本。 2. 高收入&#xff1a;家政服务人员通过手机APP接单&#xff0c;省去了中介费用&#xff0c;从而提高了服务人员的…

QT专栏1 -Qt安装教程

#本文时间2023年11月18日&#xff0c;Qt 6.6# Qt 安装简要说明&#xff1a; Qt有两个版本一个是商业版本&#xff08;收费&#xff09;&#xff0c;另一个是开源版本&#xff08;免费&#xff09;&#xff1b; 打开安装程序时&#xff0c;通过判断账号是否有公司&#xff0c;安…