力扣496. 下一个更大元素 I

Problem: 496. 下一个更大元素 I

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

因为题目说nums1是nums2的子集,那么我们先把nums2中每个元素的下一个更大元素算出来存到一个映射里,然后再让nums1中的元素去查表即可

复杂度

时间复杂度:

O ( n 1 + n 2 ) O(n1 + n2) O(n1+n2);其中 n 1 n1 n1为数组nums1的大小, n 2 n2 n2是数组nums2的大小

空间复杂度:

O ( n 1 ) O(n1) O(n1)

Code

class Solution {
    /**
     * Next Greater Element I
     *
     * @param nums1 Given array
     * @param nums2 Given array
     * @return int[]
     */
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        int[] greater = nextGreaterElement(nums2);
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums2.length; ++i) {
            map.put(nums2[i], greater[i]);
        }
        int[] res = new int[nums1.length];
        for (int i = 0; i < res.length; ++i) {
            res[i] = map.get(nums1[i]);
        }
        return res;
    }

    /**
     * Monotonic stack template
     *
     * @param nums Given array
     * @return int[]
     */
    private int[] nextGreaterElement(int[] nums) {
        int len = nums.length;
        Stack<Integer> stack = new Stack<>();
        int[] res = new int[len];
        for (int i = len - 1; i >= 0; --i) {
            while (!stack.isEmpty() && stack.peek() <= nums[i]) {
                stack.pop();
            }
            res[i] = stack.isEmpty() ? -1 : stack.peek();
            stack.push(nums[i]);
        }
        return res;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

宁夏银川、山东济南、中国最厉害的改名大师的老师颜廷利教授的前沿思想观点

在当代社会&#xff0c;一个响亮的声音穿越了传统的迷雾&#xff0c;它来自东方哲学的殿堂&#xff0c;由一位现代学者颜廷利教授所发出。他的话语&#xff0c;如同一股清泉&#xff0c;在混沌的世界里激荡着思考的波澜&#xff1a;"有‘智’不在年高&#xff0c;无‘智’…

福昕PDF编辑器自定义快捷方式

你是否为用不惯福昕PDF编辑器自带的快捷键而发愁&#xff1f;今天&#xff0c;我和大家分享一下如何设置自己想要的快捷键方式&#xff0c;希望能对大家有帮助。 步骤一&#xff1a;打开福昕PDF编辑&#xff0c;并找到更多命令 步骤二&#xff1a;切换到键盘一栏&#xff0c;并…

Stream流常用操作

一、中间操作 中间操作是返回一个新的流&#xff0c;并在返回的流中包含所有之前的操作结果。它们总是延迟计算&#xff0c;这意味着它们只会在终止操作时执行&#xff0c;这样可以最大限度地优化资源使用。 1. filter(过滤) filter()方法接受一个谓词&#xff08;一个返回boo…

栈和队列的基本见解

1.栈 1.1栈的基本概念和结构&#xff1a; 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出的原则。 压栈&#xff1a;栈的插入操作叫做进栈/压栈…

【java程序设计期末复习】chapter2 基本数据类型与数组

基本数据类型与数组 一&#xff0c;标识符和关键字 标识符 定义 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符&#xff0c;简单地说&#xff0c;标识符就是一个名字 。 性质 &#xff08;1&#xff09;标识符由字母、下划线、美元符号和…

cocos creator做圆形进度条

效果图&#xff1a; 我们在开发过程中经常要用到圆形进度条&#xff0c;例如技能CD 原文链接 之前写了一篇cocos2dx-lua_ProgressTimer创建扇形进度条,这里简单记录下在cocosCreator中如何制作。 具体方法 cocosCreator做起来比2dx还是要简单很多&#xff0c;首先给节点添加p…

PageHelper分页

文章目录 PageHelper分页ThreadLocalMap和ThreadLocal执行完PageHelper.startPage之后&#xff0c;分页参数存储到哪里了&#xff1f;Page和List的关系&#xff1f;PageInterceptor分页拦截器的作用&#xff1f;PageInfo的作用与结构&#xff1f;最后看下引入的pagehelper分页依…

Linux-部分:实用指令

1 指定运行级别 1&#xff09;基本介绍&#xff1a; 运行级别说明&#xff1a; 0&#xff1a;关机1&#xff1a;单用户【找回丢失密码】2&#xff1a;多用户状态没有网络服务3&#xff1a;多用户状态有网络服务4&#xff1a;系统未使用保留给用户5&#xff1a;图形界面6&…

新业务 新市场 | 灵途科技新品亮相马来西亚亚洲防务展

5月6日&#xff0c;灵途科技携新品模组与武汉长盈通光电&#xff08;股票代码&#xff1a;688143&#xff09;携手参加第18届马来西亚亚洲防务展。首次亮相海外&#xff0c;灵途科技便收获全球客户的广泛关注&#xff0c;为公司海外市场开拓打下坚实基础。 灵途科技与长盈通共同…

基于Llama 3搭建中文版(Llama3-Chinese-Chat)大模型对话聊天机器人

前面两篇博文&#xff0c;我们分别在个人笔记本电脑部署了Llama 3 8B参数大模型&#xff0c;并使用Ollama搭建了基于 Web 可视化对话聊天机器人&#xff0c;可以在自己电脑上愉快的与Llama大模型 Web 机器人对话聊天了。但在使用过程中&#xff0c;笔者发现Llama大模型经常出现…

避免锁表:为Update语句中的Where条件添加索引字段

最近在灰度环境中遇到一个问题&#xff1a;某项业务在创建数据时耗时异常长&#xff0c;但同样的代码在预发环境中并未出现此问题。起初我们以为是调用第三方接口导致的性能问题&#xff0c;但通过日志分析发现第三方接口的响应时间正常。最终&#xff0c;我们发现工单表的数据…

【C++】C++11(一)

C11是一次里程碑式的更新&#xff0c;我们一起来看一看~ 目录 列表初始化&#xff1a;{ }初始化&#xff1a;std::initializer_list&#xff1a; 声明&#xff1a;auto&#xff1a;decltype&#xff1a; STL的一些变化&#xff1a; 列表初始化&#xff1a; { }初始化&#xf…

音视频开发4-补充 FFmpeg 开发环境搭建 -- 在windows 上重新build ffmpeg

本节的目的是在windows 上 编译 ffmpeg 源码&#xff0c;这样做的目的是&#xff1a;在工作中可以根据工作的实际内容裁剪 ffmpeg&#xff0c;或者改动 ffmpeg 的源码。 第一步 &#xff1a;下载&#xff0c; 安装&#xff0c;配置 &#xff0c;运行 msys64 下载 下载地址&…

如何使用ssh将vscode 连接到服务器上,手把手指导

一、背景 我们在开发时&#xff0c;经常是window上安装一个vscode编辑器&#xff0c;去连接一个虚拟机上的linux&#xff0c;这里常用的是SSH协议&#xff0c;了解其中的操作非常必要。 二、SSH协议 SSH&#xff08;Secure Shell&#xff09;是一种安全协议&#xff0c;用于…

某某某加固系统分析

某某某加固系统内核so dump和修复&#xff1a; 某某某加固系统采取了内外两层native代码模式&#xff0c;外层主要为了保护内层核心代码&#xff0c;从分析来看外层模块主要用来反调试&#xff0c;释放内层模块&#xff0c;维护内存模块的某些运行环境达到防止分离内外模块&am…

vulnhub靶机De-ICE_S2.100_(de-ice.net-2.100-1.0)

下载地址&#xff1a;https://download.vulnhub.com/deice/De-ICE_S2.100_%28de-ice.net-2.100-1.0%29.iso 靶机搭建 注意下载下来的是iso文件接下来说明系统选择 linux的Debian 7.x就可以 然后注意一点我们需要创建一个192.168.2.0/24的网卡进行连接&#xff08;靶机ip地址…

RTOS(3)极简ARM架构与汇编

1.掌握八条汇编指令即可 读内存loadLDR R0&#xff0c;[addrA]写内存storeSTR R0&#xff0c;[addrA]加ADD R0&#xff0c;R1&#xff0c;R2减SUB R0&#xff0c;R1&#xff0c;R2比较CMP R0&#xff0c;R1跳转B / BL入栈PUSH { R3&#xff0c;LR }出…

OpenStack平台Glance管理

1. 规划节点 使用OpenStack平台节点规划。 IP主机名节点192.168.100.10controller控制节点192.168.100.20compute计算节点 2. 基础准备 使用实战案例-部署的OpenStack平台。 IP 主机名 节点 192.168.100.10 controller 控制节点 192.168.100.20 copute 计算节点 02 案例分…

基于机器学习判断面部微表情发现哪些人更容易诊有帕金森病

1. 概述 帕金森病&#xff08;Parkinson’s disease&#xff0c;PD&#xff09;是一种慢性、进展性的神经退行性疾病&#xff0c;主要影响运动系统。该病症以大脑中黑质致密部多巴胺能神经元的逐渐丧失为特征&#xff0c;导致多巴胺&#xff08;一种重要的神经递质&#xff09…