LeetCode-496-下一个更大元素
题目描述:
题目链接:LeetCode-496-下一个更大元素
解题思路:
方法一:暴力
方法二:单调栈
方法一代码实现:
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {// 最笨的方法:暴力int len1= nums1.length;int len2= nums2.length;int[] res=new int[len1];Arrays.fill(res,-1);for (int i = 0; i < len1; i++) {for (int j = 0; j < len2; j++) {if (nums1[i]==nums2[j]){for (int k = j; k <len2 ; k++) {if (nums2[k]>nums2[j]){res[i]=nums2[k];break;// 找到之后一定要 break,不然会一直往后找,每次都是最后一个}}}}}return res;}
方法二代码实现:
- 先将nums1中的元素和下标都映射到map中,方便遍历nums2的时候查找
- 开始遍历nums2,存放的是下标,初始时将0放到stack中,开始判断栈口元素和当前元素的大小
- 若 栈口元素 < 当前元素的大小,再判断栈是否为空,并且map中是否包含栈顶元素下标对应的索引,都有的话再更新res数组;
- 若 栈口元素 = 当前元素的大小,直接入栈
- 若 栈口元素 > 当前元素的大小,直接入栈
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {int len1 = nums1.length;int len2= nums2.length;int[] res = new int[len1];// 初始化为-1Arrays.fill(res, -1);// 新学的方式,直接使用工具类,底层原理和自己写的效果是一样的Map<Integer, Integer> map = new HashMap<>();// 将nums1放到map中,目的是根据元素的数值可以找到其对应的下标for (int i = 0; i < len1; i++) {map.put(nums1[i], i);// <4,0> <1,1> <2,2>}Stack<Integer> stack = new Stack<>();// 单调栈遍历的是nums2stack.push(0);// 把nums2下标存进去for (int i = 1; i < nums2.length; i++) {// 如果 栈口元素 < 当前遍历元素: 收获结果,栈口元素出栈,再比较当前 栈口元素和 当前遍历元素的结果// 如果 栈口元素 = 当前遍历元素: 直接入栈// 如果 栈口元素 > 当前遍历元素: 直接入栈if (nums2[i] <= nums2[stack.peek()]) {// 保证是单调递增的栈stack.push(i);} else {// 持续判断的过程:先判断是否在map中while (!stack.isEmpty() && nums2[stack.peek()] < nums2[i]) {if (map.containsKey(nums2[stack.peek()])) {Integer index = map.get(nums2[stack.peek()]);res[index] = nums2[i];}stack.pop();// 弹出栈顶元素}stack.add(i);// 都不满足就入栈}}return res;}
}
相关文章:

LeetCode-496-下一个更大元素
题目描述: 题目链接:LeetCode-496-下一个更大元素 解题思路: 方法一:暴力 方法二:单调栈 方法一代码实现: class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {// 最笨的方法&am…...

C++中的Lambda表达式
一、为什么要有lambda表达式 struct Goods {string _name; // 名字double _price; // 价格int _evaluate; // 评价Goods(const char* str, double price, int evaluate):_name(str), _price(price), _evaluate(evaluate){} }; 对于一个Goods类,需要对其中3个成员分…...
dockerfile搭建lnmp
systemctl stop firewalld systemctl disable firewalld setenforce 0 docker network create --subnet172.18.0.0/16 --opt "com.docker.network.bridge.name""docker1" mynetwork #部署nginx(容器IP 为 172.18.0.10) mkdir /…...
python之数据库操作详解
一般来说,我们对数据库里的操作需要先连接,创建游标对象,然后通过游标对象执行SQL语句去对SQL的数据进行操作,本篇文章旨在记录与科普。 1.cursor相关 元组是不可变的数据类型,只能查询,不能修改…...
完成flex布局与float布局
一、flex布局 <style>.nav {display: flex;background-color: #f8f8f8; /* 导航栏背景颜色 */}.nav a {flex: 1;display: flex;align-items: center;justify-content: center;padding: 14px 16px;text-decoration: none;color: #555555; /* 导航栏文字颜色 */}.nav a:ho…...

ThinkPHP团购拼购商城源码/带分销团购商城网站源码/完美版
ThinkPHP团购拼购商城源码,带分销团购商城网站源码,很完美的一套基于ThinkPHP开发的团购分销商城源码,界面也很大气,站长亲测。有需要的可以借鉴一下。 下载地址:https://bbs.csdn.net/topics/613231434...

awvs 中低危漏洞
低危 X-Frame-Options Header未配置 查看请求头中是否存在X-Frame-Options Header字段 会话Cookie中缺少secure属性(未设置安全标志的Cookie) 当cookie设置为Secure标志时,它指示浏览器只能通过安全SSL/TLS通道访问cookie。 未设置HttpOnly标志的Cookie 当cookie设置…...

openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw
文章目录 openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw95.1 使用postgres_fdw95.2 postgres_fdw下推主要成分95.3 常见问题95.4 注意事项 openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw openGauss的fdw实现的功能是各个…...

并不止于表面理论和简单示例——《Python数据科学项目实战》
Python 现在可以说是运用最广泛的编程语言之一,使用 Python 的人不只局限在计算机相关专业的从业者,很多来自金融领域、医疗领域以及其他我们无法想象的领域的人,每天都在使用 Python处理各种数据、使用机器学习进行预测以及完成各种有趣的工作。 长久以来ÿ…...

skywalking功能介绍
目标 前置:性能监控-微服务链路追踪skywalking搭建-CSDN博客 使用skywalking进行链路监控,找到应用的时间消耗再哪。 服务 服务信息 请求接口后查看skywalking,可以看到有一个请求,响应时间为1852ms,性能指数Apdex…...

c++桥接模式,中介者模式应用实现状态跳转
上图为例,按上述两种方式实现的模式跳转,如果在原先的三种模式之间再增加多一种模式,就会引起每个模式都会要求改变,并且逻辑混乱,因此更改模式为桥接中介者访问,将抽象和实现分离,实现之间采用…...

【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Ribbon 一、 Ribbon负载均衡原理1.1 负载均…...

亘古难题——前端开发or后端开发
一、引言 前端开发 前端开发是创建WEB页面或APP等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。 前端开发从网页制作演变而来,名称上有很明显的时…...

Notepad++提取含有特定字符串的行
ctrl M快捷键,进入"标记" 页面 标记所在行–循环查找-- 正则表达式 – 输入关键字 – 全部标记 – Copy Marked Text 关键字格式如下: .*关键字.*ctrl v,粘贴即可。...

host配置
配置host文件的作用主要是用于自定义域名与IP地址之间的映射关系。Host文件是一个操作系统用于将人类可读的域名(例如:www.example.com)映射到IP地址(例如:192.168.1.1)的文件。当你在浏览器中输入一个网址…...

```,```中间添加 # + 空格 + 空行后遇到的底部空行出错,书接上回,处理空行
【python查找替换:查找空行,空行前后添加,中间添加 # 空格 空行后遇到的第1行文字? - CSDN App】http://t.csdnimg.cn/QiKCV def is_blank(line):return len(line.strip()) 0txt 时间戳: ("%Y-%m-%d %H:%M:…...

Unity官方文档中关于内存管理的翻译(2021.3)
原文:Memory in Unity - Unity 手册 Unity内存管理 为了确保您的应用程序运行时没有性能问题,了解Unity如何使用和分配内存非常重要。本文档的这一部分解释了Unity中内存是如何工作的,适用于希望了解如何提高应用程序内存性能的读者。 Unity使用三个内…...

点云处理开发测试题目 完整解决方案
点云处理开发测试题目 文件夹中有一个场景的三块点云数据,单位mm。是一个桌子上放了一个纸箱,纸箱上有四个圆孔。需要做的内容是: 1. 绘制出最小外接立方体,得到纸箱的长宽高值。注意高度计算是纸箱平面到桌子平面的距离。 2. 计算出纸箱上的四个圆的圆心坐标和半径,对圆…...

TensorRT的结构
Builder(网络原数据):模型搭建的入口,网络的tensorRT内部表示以及可执行程序引擎都是由该对象的成员方法生成的 BuiderConfig(网络原数据的选项):负责设置模型的一些参数,如是否开始…...

python对excel数据表进行数据清洗
当拿到excel表,使用python对excel操作前,第一件事情是对excel表的数据进行数据清洗。 数值是否有空值,是否有重复的数据,把以上2个问题解决完成以后,才是对数据真正操作的开始。 1、使用pandans读取数据 2、判断exce…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...