【leetcode】456. 132 模式 单调栈出栈特性

news2024/11/26 19:25:05

在这里插入图片描述
看题意是要在数组中找到一个大于左右元素波峰。

一开始看数据量是 10e5,还以为是 nlogn算法。没想到居然是个 n 的单调栈。

这道题利用了递减单调栈出栈的特性, 出栈元素 k、栈中某一个特定元素 j 满足 nums[j] > nums[k],如果从数组后面向前遍历的话,则有 j < k 同时 nums[j] > nums[k]。

很好理解 因为让 k 出栈的元素 一定是比 k 要大的一个元素。

接下来只要找到 题目中 i 中,就可以返回 true。

维护一个 max 变量作为在出栈元素中最大一个。

向前遍历时,只要 nums[i] < max 这个变量,就找到了 i < j < k, 同时 nums[i] < nums[k] < nums[j]

    public boolean find132pattern(int[] nums) {
        int k = Integer.MIN_VALUE;
        Stack<Integer> stack = new Stack<>();
        for(int i = nums.length - 1; i >= 0; i--) {
            if(nums[i] < k) {
                return true;
            }
            if(stack.isEmpty()) {
                stack.add(nums[i]);
            } else {
                while(!stack.isEmpty() && stack.peek() < nums[i]) {
                    k = Math.max(k, stack.pop());
                }
                stack.add(nums[i]);
            }
        }
        return false;
    }

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

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

相关文章

什么是uni-app?为什么要学习uni-app?

文章目录 前言 一、什么是uni-app框架&#xff1f; 二、为什么要学&#xff1f; 三、uni-app开发的适用场景是什么&#xff1f; 总结 前言 随着前端技术的不断发展进步&#xff0c;跨端开发成为了程序猿不得不面临的一个难题&#xff0c;uni-app的出现解决了程序猿不断重复…

《Java 核心技术面试》课程笔记(十)

如何保证集合是线程安全的? 典型回答 Java 提供了不同层⾯的线程安全支持。 在传统集合框架内部&#xff0c;除了 Hashtable 等同步容器&#xff0c;还提供了所谓的同步包装器&#xff08;Synchronized Wrapper&#xff09;&#xff0c;我们可以调用 Collections 工具类提供…

16款ChatGPT工具,太炸裂了,收藏!

1.ChatGPT for google 一个浏览器插件&#xff0c;可搭配现有的搜索引擎来使用。 最大化搜索效率&#xff0c;对搜索体验的提升相当离谱&#xff1a; 安装完插件后&#xff0c;在搜索引擎搜索任何问题&#xff0c;都能获取两份答案。 左边是谷歌抓取的全网资源&#xff0c;右…

完美解决:“因为计算机丢失VCRUNTIME140_1.dll”

VCRUNTIME140_1.dll是Microsoft Visual C Redistributable的一个组件&#xff0c;它包含了许多用于C编程的函数和类。如果你的系统缺少了这个文件&#xff0c;那么你可能会遇到“找不到VCRUNTIME140_1.dll无法继续执行代码”的错误提示。 方法1&#xff1a;直接复制VCRUNTIME…

python多进程与多线程

1 Python多线程 1.1 GIL 其他语言&#xff0c;CPU是多核时是支持多个线程同时执行。但在Python中&#xff0c;无论是单核还是多核&#xff0c;同时只能由一个线程在执行。其根源是GIL的存在。GIL的全称是Global Interpreter Lock(全局解释器锁)&#xff0c;来源是Python设计之…

[MySQL]事务的浅谈

欲买桂花同载酒 终不似 少年游 目录 1.MySQL为什么需要事务 2.MySQL对事务的支持 3.关于事务的操作 控制方式(对于单条SQL) 控制方式二(START TRANSACTION 或 BEGIN) 4.关于ACID 5.关于事务的隔离级别 5.1事务可能存在的问题 5.2事务隔离级别 5.3难点(RR 级别 …

Autosar RTE S/R接口implicit与Explicit的实现与区别

文章目录 前言接口的代码implicitIReadIWrite ExplicitReadWrite 区别与使用场景总结 前言 Autosar官方文档阅读起来比较费劲&#xff0c;一般从实际应用中来了解更多规范中的内容。本文介绍最常用的RTE S/R接口的implicit隐式与Explicit显式两种方式的实现与差别 接口的代码…

SSM + MySQL + Vue2.x + ElementU 图书管理系统(期末作业)

图书管理系统 项目介绍 &#x1f525; SSM MySQL Vue2.x ElementUI &#x1f525; 本项目使用 Idea 开发工具采用当前最火的Java Web前端框架开发&#xff0c;在保证质量的同时界面美观&#xff0c;交互友好&#xff0c;实在是期末大作业的首选项目。 软件架构 使用软…

HashMap源码详解

文章目录 简单介绍提出问题流程说明及验证put元素的流程怎样找到要存储的下标位置的?什么时候会扩容? 加载因子、阈值这些有什么含义?怎样扩容的?扩容的流程.链表可以转成红黑树, 那会从红黑树转成链表吗?什么时候会从链表转成红黑树 小总结 简单介绍 HashMap是Java中最最…

Metal入门学习:绘制纹理图片

一、编程指南PDF下载链接(中英文档&#xff09; 1、Metal编程指南PDF链接 https://github.com/dennie-lee/ios_tech_record/raw/main/Metal学习PDF/Metal 编程指南.pdf 2、Metal着色语言(Metal Shader Language:简称MSL)编程指南PDF链接 https://github.com/dennie-lee/ios_te…

Linux服务器丨重测序数据分析常用软件安装指南

重测序分析软件安装指南 重测序&#xff08;resequencing&#xff09;是指对已知基因组进行高通量测序&#xff0c;以检测个体或种群的遗传变异&#xff0c;从而研究基因组的结构和功能。与全基因组测序不同&#xff0c;重测序通常只对一部分基因组进行测序&#xff0c;例如外显…

【2023 雷泽杯 · Misc】我是签到题

一道图片隐写题 目录 一、题目 二、思路 1.010editor查看源码 2.检索头部关键字段 3.图片隐写——高度隐写 一、题目 看不到这个图片对吧&#xff0c;这就是题目原本的样子。 二、思路 1.010editor查看源码 很明显的rar特征&#xff0c;尝试将后缀改成rar后打开。 发…

《Java就业班体系结构.pdf》:从入门到精通,掌握Java开发的终极指南,成为熟练高级开发者!

Java开发的终极指南 第1阶段&#xff1a;JAVA开篇第2阶段&#xff1a;JAVA语言语法第3阶段&#xff1a;集成开发工具的使用第4阶段&#xff1a;面向对象第5阶段&#xff1a;JavaSE进阶学习第6阶段&#xff1a;数据库JDBC第7阶段&#xff1a;前端精讲第8阶段&#xff1a;JavaEE第…

RocketMQ的学习历程(4)----消息处理 (2)

1.消费者的两种消费模式 顺序消费模式&#xff08;Sequential Consumer Mode&#xff09;&#xff1a; 在顺序消费模式下&#xff0c;消息队列中的消息按照发送的顺序被消费者顺序消费。每个消息队列只会被一个消费者线程消费&#xff0c;确保消息的顺序性。这种模式适用于需要…

【Hadoop】三、数据仓库基础与Apache Hive入门

文章目录 三、数据仓库基础与Apache Hive入门1、数据仓库基本概念1.1、数据仓库概念1.2、场景案例&#xff1a;数据仓库为何而来1.3、数据仓库主要特征1.4、数据仓库主流开发语言--SQL 2、Apache Hive入门2.1、Apache Hive概述2.2、场景设计&#xff1a;如何模拟实现Hive功能2.…

深度学习用于医学预后-第二课第四周16-17节-比较两个患者的风险

我们怎样比较两个患者的风险&#xff1f; 让我们谈谈如何比较两名患者的风险。假设我们有两个病人&#xff0c;一个50岁&#xff0c;血压162&#xff0c;另一个61岁&#xff0c;血压140。 我们可以使用生存树首先找出他们所属的组。所以我们看到第一个病人的年龄小于60&#…

【CSS 选择器应用在QSS】第二天

CSS 选择器应用在QSS 【1】元素选择器&#xff08;元素通用性&#xff09;【2】id 选择器&#xff08;唯一性&#xff09;【2.1】CSS【2.2】QSS 【3】类选择器【3.1】CSS【3.2】QSS 【4】类选择器&#xff08;只针对指定元素&#xff09;【4.1】CSS【4.2】QSS 【5】通用选择器【…

iptables 防火墙二

目录 SNAT 原理与应用SNAT原理&#xff1a;修改数据包的源地址。 SNAT 实验DNAT原理与应用DNAT原理&#xff1a;修改数据包的目的地址。DNAT转换前提条件&#xff1a; DNAT 示例 SNAT 原理与应用 SNAT 应用环境&#xff1a;局域网主机共享单个公网IP地址接入Internet&#xff…

MyBatis技术练习

一、模仿教程练习增删改查&#xff0c;自己完成一个新表相关操作 1、配置fkxml文件 我们这里的增删改查sql语句必须对应我们自己创建的表 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.…

实测有效:由于找不到MSVCP140.dll,无法继续执行代码

从解决实际问题的角度上&#xff0c;推荐两种实测有效的方法。 先来说一下msvcp140.dll是什么&#xff1f; msvcp140.dll 是 Microsoft Visual C Redistributable for Visual Studio 2015 库文件的一部分。这个文件是一些需要 Visual Studio 2015 支持的程序所必需的。 如果…