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

下一个更大元素||

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.mzph.cn/news/155601.shtml

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

相关文章

从零开始的c语言日记day35——数据在内存中的储存

数据类型介绍 之前已经学了了一些基本的内置类型&#xff0c;以及空间大小。 类型的意义&#xff1a; 使用这个类型开辟内存空间的大小&#xff08;大小决定了使用范围&#xff09;。如何看待内存空间的视角 类型的基本归类 整形&#xff1a; 字符的本质是ASCLL码值&#x…

Python Opencv实践 - 二维码和条形码识别

使用pyzbar模块来识别二维码和条形码。ZBar是一个开源软件&#xff0c;用来从图像中读取条形码&#xff0c;支持多种编码,比如EAN-13/UPC-A、UPC-E、EAN-8、代码128、代码39、交错2/5以及二维码。 pyzbar是python封装ZBar的模块&#xff0c;我们用它来做条形码和二维码的识别。…

c++ ,python监控 进程 状态 fork

【精选】操作系统实验二 观察Linux进程状态_linux什 么时候出现运行状态、暂停状态、可中断阻塞状 态、不可中断阻塞状态、僵_Ace2NoU的博客-CSDN博客 Linux C/C 监控进程变化_mob649e81583204的技术博客_51CTO博客 #include <sys/types.h> #include <sys/wait.h>…

C++:哈希表的模拟实现

文章目录 哈希哈希冲突哈希函数 解决哈希冲突闭散列&#xff1a;开散列 哈希 在顺序结构和平衡树中&#xff0c;元素的Key和存储位置之间没有必然的联系&#xff0c;在进行查找的时候&#xff0c;要不断的进行比较&#xff0c;时间复杂度是O(N)或O(logN) 而有没有这样一种方案…

Python_WebSocket服务器和Python_JavaScript客户端

简述&#xff1a; Python创建WebSocket服务器和客户端Python创建WebSocket服务器和JavaScript创建客户端Python 异步网络WebSocket应用 在本文中&#xff0c;将讨论 WebSocket客户端和服务器之间的单个长期连接。 我将解释无状态 HTTP 协议的问题&#xff0c;以及 WebSocket 如…

审计dvwa高难度命令执行漏洞的代码,编写实例说明如下函数的用法

审计dvwa高难度命令执行漏洞的代码 &#xff0c;编写实例说明如下函数的用法 代码&#xff1a; <?phpif( isset( $_POST[ Submit ] ) ) {// Get input$target trim($_REQUEST[ ip ]);// Set blacklist$substitutions array(& > ,; > ,| > ,- > ,$ …

SSM框架(二):AOP和事物

文章目录 一、AOP的介绍1.1 基本概念1.2 AOP入门1.3 AOP工作流程1.4 切入点表达式1.5 AOP的通知类型1.6 ProceedingJoinPoint1.7 AOP通知获取参数数据 二、事物2.1 基本介绍2.2 事物角色2.3 事物属性2.4 事物的传播行为 一、AOP的介绍 1.1 基本概念 1.2 AOP入门 导入坐标 <…

linux之chmod命令

在linux系统中经常遇到需要对文件修改读写执行的权限&#xff0c;下面对chomod命令进行梳理总结。 1、文件权限 在linux系统中&#xff0c;每个文件都有归属的所有者和所有组&#xff0c;并且规定了文件的所有者、以及其他人对文件所拥有的可读&#xff08;r&#xff09;、可写…

C# System.Array.CopyTo() 和 System.Array.Clone() 有什么区别

System.Array.CopyTo() 和 System.Array.Clone() 是用于数组复制的两种不同方法&#xff0c;它们在实现和用途上有一些区别。 System.Array.CopyTo() 方法&#xff1a; CopyTo() 方法用于将数组的元素复制到另一个数组。它是 Array 类的实例方法&#xff0c;可以用于复制一个…

Intel Xeon 处理器系列

Intel Xeon 处理器是专为服务器和工作站设计的&#xff0c;其型号命名和分级体系相对复杂&#xff0c;涵盖了从入门级到高端的各种应用。以下是 Intel Xeon 处理器的一些主要分类和型号&#xff0c;以及它们各自的特点和用途&#xff1a; 1. Xeon E 系列 Xeon E3: 针对小型企…

gitlab 实战

一.安装依赖 yum install -y curl policycoreutils-python openssh-server perl 二.安装gitlab yum install gitlab-jh-16.0.3-jh.0.el7.x86_64.rpm 三.修改下面的 vim /etc/gitlab/gitlab.rbexternal_url http://192.168.249.156 四.初始化 gitlab-ctl reconfigure 五.查看状…

c语言-数据结构-链式二叉树

目录 1、二叉树的概念及结构 2、二叉树的遍历概念 2.1 二叉树的前序遍历 2.2 二叉树的中序遍历 2.3 二叉树的后序遍历 2.4 二叉树的层序遍历 3、创建一颗二叉树 4、递归方法实现二叉树前、中、后遍历 4.1 实现前序遍历 4.2 实现中序遍历 4.3 实现后序遍历 5、…

CV计算机视觉每日开源代码Paper with code速览-2023.11.16

点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构】ConvNet vs Transformer, Supervised vs CLIP: Beyond ImageNet Accuracy 论文地址&#xff1a;https://arxiv.org//pdf/23…

深度模型压缩研究回顾

深度模型压缩研究回顾 作者&#xff1a;安静到无声 个人主页 目录 深度模型压缩研究回顾推荐专栏 在本节中&#xff0c;主要介绍了目前主流的深度神经网络压缩与加速方法&#xff0c;主要包括轻量化网络设计、参数量化、知识蒸馏、模型剪枝和硬件加速等&#xff0c;其中模型剪…

【算法】最小生成树——普利姆 (Prim) 算法

目录 1.概述2.代码实现2.1.邻接矩阵存储图2.2.邻接表存储图2.3.测试 3.应用 1.概述 &#xff08;1&#xff09;在一给定的无向图 G (V, E) 中&#xff0c;(u, v) 代表连接顶点 u 与顶点 v 的边&#xff0c;而 w(u, v) 代表此边的权重&#xff0c;若存在 T 为 E 的子集且为无循…

湖科大计网:应用层

一、应用层概述 交互&#xff0c;实现特定问题&#xff01; 二、客户与服务器模型 一、C/S 客户/服务器方式 服务与被服务的关系。 二、P2P方式 对等方式 P2P方式是对等的&#xff0c;没有固定的服务器。 三、DNS域名系统 DNS&#xff08;Domain Name System&#xff09; 一、域…

2018年计网408

第33题 下列 TCP/P应用层协议中, 可以使用传输层无连接服务的是()A. FTPB. DNSC. SMTPD. HTTP 本题考察TCP/IP体系结构中&#xff0c;应用层常用协议所使用的运输层服务。 如图所示。这是TCP/IP体系结构中常见应用层协议各自所使用的运输层端口,。在这些应用层协议中&#x…

uvm白皮书练习_ch2_ch231_加入transaction

2.3 为验证平平台加入各种组件 uvm白皮书练习_ch2_ch231_加入transaction 代码部分 top_tb.sv timescale 1ns / 1ps include "uvm_macros.svh"import uvm_pkg::*; /*只能现在*/include "my_if.sv" include "my_transaction.sv" include "…

Vue Router的使用

Vue.js是一个流行的JavaScript框架&#xff0c;用于开发单页面应用程序。Vue提供了一个强大的路由系统&#xff0c;可以帮助我们管理应用程序中的不同页面。在本文中&#xff0c;我们将详细讲解Vue路由的使用方法。 目录 1. 安装Vue Router2. 创建路由实例3. 配置路由4. 在模板…

关闭bitlocker加密

windows11的笔记本电脑买回来发现分驱都处于bitlocker状态&#xff0c;上网上搜索都是说进入控制面板的安全项进行关闭&#xff0c;包括去搜索栏搜索“管理 BitLocker”&#xff0c;对搜索出来的项打开&#xff0c;经过试验&#xff0c;它们进入的是同一个位置&#xff0c;只有…