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.pswp.cn/news/389910.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389910.shtml
英文地址,請注明出處:http://en.pswp.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…