496. 下一个更大元素 I

496. 下一个更大元素 I

给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。

请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。

nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。

示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
输出: [-1,3,-1]
解释:对于 num1 中的数字 4 ,你无法在第二个数组中找到下一个更大的数字,因此输出 -1 。对于 num1 中的数字 1 ,第二个数组中数字1右边的下一个较大数字是 3 。对于 num1 中的数字 2 ,第二个数组中没有下一个更大的数字,因此输出 -1 。示例 2:输入: nums1 = [2,4], nums2 = [1,2,3,4].
输出: [3,-1]
解释:对于 num1 中的数字 2 ,第二个数组中的下一个较大数字是 3 。对于 num1 中的数字 4 ,第二个数组中没有下一个更大的数字,因此输出 -1 。

提示:

  • 1 <= nums1.length <= nums2.length <= 1000

  • 0 <= nums1[i], nums2[i] <= 10^4

  • nums1和nums2中所有整数 互不相同

  • nums1 中的所有整数同样出现在 nums2 中

  • 进阶:你可以设计一个时间复杂度为 O(nums1.length + nums2.length) 的解决方案吗?

解题思路

  1. 为了在遍历nums2中元素时,可以快速定位到其在nums1中的对应下标,使用map记录下nums1中元素和对应下标的映射关系,当计算nums2中元素时,可以直接获取到需要填入结果数组的下标
  2. 使用单调递增的栈维护,栈顶元素的值是最小的,当遍历到nums2[i]时,处于i右边区间元素的递增序列,通过查找递增序列中大于nums2[i]的元素,该元素就是右边的第一个比 nums2[i] 大的元素

代码

func nextGreaterElement(nums1 []int, nums2 []int) []int {m := make(map[int]int,len(nums1))for i := range nums1 {m[nums1[i]]=i}res:= make([]int, len(nums1))stack:= make([]int,0)for i := len(nums2)-1; i >=0 ; i-- {for len(stack)>0&&nums2[i]>=stack[len(stack)-1] {stack=stack[:len(stack)-1]}idx,ok := m[nums2[i]]if ok{if len(stack)==0 {res[idx]=-1}else {res[idx]=stack[len(stack)-1]}}stack = append(stack, nums2[i])}return res
}

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

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

相关文章

利用PHP扩展Taint找出网站的潜在安全漏洞实践

一、背景 笔者从接触计算机后就对网络安全一直比较感兴趣&#xff0c;在做PHP开发后对WEB安全一直比较关注&#xff0c;2016时无意中发现Taint这个扩展&#xff0c;体验之后发现确实好用&#xff1b;不过当时在查询相关资料时候发现关注此扩展的人数并不多&#xff1b;最近因为…

美团骑手检测出虚假定位_在虚假信息活动中检测协调

美团骑手检测出虚假定位Coordination is one of the central features of information operations and disinformation campaigns, which can be defined as concerted efforts to target people with false or misleading information, often with some strategic objective (…

869. 重新排序得到 2 的幂

869. 重新排序得到 2 的幂 给定正整数 N &#xff0c;我们按任何顺序&#xff08;包括原始顺序&#xff09;将数字重新排序&#xff0c;注意其前导数字不能为零。 如果我们可以通过上述方式得到 2 的幂&#xff0c;返回 true&#xff1b;否则&#xff0c;返回 false。 示例 …

org.apache.maven.archiver.MavenArchiver.getManifest

eclipse导入新的maven项目时&#xff0c;pom.xml第一行报错&#xff1a; org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration) 解决办法&#xff1a; help -> Install New…

杀进程常用命令

杀进程命令pkill 进程名killall 进程名 # 平缓kill -HUP pid # 平缓kill -USR2 pidkill pid &#xff08;-9 不要使用&#xff09;转载于:https://www.cnblogs.com/jmaly/p/9492406.html

CertUtil.exe被利用来下载恶意软件

1、前言 经过国外文章信息&#xff0c;CertUtil.exe下载恶意软件的样本。 2、实现原理 Windows有一个名为CertUtil的内置程序&#xff0c;可用于在Windows中管理证书。使用此程序可以在Windows中安装&#xff0c;备份&#xff0c;删除&#xff0c;管理和执行与证书和证书存储相…

335. 路径交叉

335. 路径交叉 给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始&#xff0c;先向北移动 distance[0] 米&#xff0c;然后向西移动 distance[1] 米&#xff0c;向南移动 distance[2] 米&#xff0c;向东移动 distance[3] 米&#xff0c;持续移动。也就是说&#x…

回归分析假设_回归分析假设的最简单指南

回归分析假设The Linear Regression is the simplest non-trivial relationship. The biggest mistake one can make is to perform a regression analysis that violates one of its assumptions! So, it is important to consider these assumptions before applying regress…

Spring Aop之Advisor解析

2019独角兽企业重金招聘Python工程师标准>>> 在上文Spring Aop之Target Source详解中&#xff0c;我们讲解了Spring是如何通过封装Target Source来达到对最终获取的目标bean进行封装的目的。其中我们讲解到&#xff0c;Spring Aop对目标bean进行代理是通过Annotatio…

react事件处理函数中绑定this的bind()函数

问题引入 import React, { Component } from react; import {Text,View } from react-native;export default class App extends Component<Props> {constructor(props){super(props)this.state{times:0}this.timePlusthis.timePlus.bind(this);}timePlus(){let timethis…

301. 删除无效的括号

301. 删除无效的括号 给你一个由若干括号和字母组成的字符串 s &#xff0c;删除最小数量的无效括号&#xff0c;使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 示例 1&#xff1a; 输入&#xff1a;s “()())()” 输出&#xff1a;["(())…

为什么随机性是信息

用位思考 (Thinking in terms of Bits) Imagine you want to send outcomes of 3 coin flips to your friends house. Your friend knows that you want to send him those messages but all he can do is get the answer of Yes/No questions arranged by him. Lets assume th…

Chrome无法播放m3u8格式的直播视频流的问题解决

出国&#xff0c;然后安装这个插件即可&#xff1a;Native HLS Playback https://chrome.google.com/webstore/detail/native-hls-playback/emnphkkblegpebimobpbekeedfgemhof?hlzh-CN转载于:https://www.cnblogs.com/EasonJim/p/8737001.html

大数据相关从业_如何在组织中以数据从业者的身份闪耀

大数据相关从业Build bridges, keep the maths under your hat and focus on serving.架起桥梁&#xff0c;将数学放在脑海中&#xff0c;并专注于服务。 通过协作而不是通过孤立的孤岛来交付出色的数据工作。 (Deliver great data work through collaboration not through co…

暑假周总结六

本周开始了做网站的商品展示和商品查询的功能&#xff0c;基本功能已完成了。平均每天花4到5个小时进行学习和编码 这周学习了lucene分词器&#xff0c;但是虽然学了一些这些方面的东西&#xff0c;但是查询的时候效果还是不行&#xff0c;还是继续学习 一些更好处理关键字的方…

Django进阶之中间件

中间件简介 在http请求 到达视图函数之前 和视图函数return之后&#xff0c;django会根据自己的规则在合适的时机执行中间件中相应的方法。 中间件的执行流程 1、执行完所有的request方法 到达视图函数。 2、执行中间件的其他方法 2、经过所有response方法 返回客户端。 注意…

汉诺塔递归算法进阶_进阶python 1递归

汉诺塔递归算法进阶When something is specified in terms of itself, it is called recursion. The recursion gives us a new idea of how to solve a kind of problem and this gives us insights into the nature of computation. Basically, many of computational artifa…

500. 键盘行

500. 键盘行 给你一个字符串数组 words &#xff0c;只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 美式键盘 中&#xff1a; 第一行由字符 “qwertyuiop” 组成。 第二行由字符 “asdfghjkl” 组成。 第三行由字符 “zxcvbnm” 组成。 示例 1&a…

windows 停止nginx

1、查找进程 tasklist | findstr nginx2、杀死进程 taskkill /pid 6508 /F3、一次杀死多个进程taskkill /pid 6508 /pid 16048 /f转载于:https://blog.51cto.com/dressame/2161759

SpringBoot返回json和xml

有些情况接口需要返回的是xml数据&#xff0c;在springboot中并不需要每次都转换一下数据格式&#xff0c;只需做一些微调整即可。 新建一个springboot项目&#xff0c;加入依赖jackson-dataformat-xml&#xff0c;pom文件代码如下&#xff1a; <?xml version"1.0&quo…