【LeetCode:496. 下一個更大元素 I + 單調棧】

在這里插入圖片描述

🚀 算法題 🚀

🌲 算法刷題專欄 | 面試必備算法 | 面試高頻算法 🍀
🌲 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣?
🌲 作者簡介:碩風和煒,CSDN-Java領域優質創作者🏆,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發技術棧|面試刷題|面經八股文|經驗分享|好用的網站工具分享💎💎💎
🌲 恭喜你發現一枚寶藏博主,趕快收入囊中吧🌻
🌲 人生如棋,我愿為卒,行動雖慢,可誰曾見我后退一步?🎯🎯

🚀 算法題 🚀

在這里插入圖片描述

在這里插入圖片描述

🍔 目錄

    • 🚩 題目鏈接
    • ? 題目描述
    • 🌟 求解思路&實現代碼&運行結果
      • ? 單調棧
        • 🥦 求解思路
        • 🥦 實現代碼
        • 🥦 運行結果
    • 💬 共勉

🚩 題目鏈接

  • 496. 下一個更大元素 I

? 題目描述

nums1 中數字 x 的 下一個更大元素 是指 x 在 nums2 中對應位置 右側 的 第一個 比 x 大的元素。

給你兩個 沒有重復元素 的數組 nums1 和 nums2 ,下標從 0 開始計數,其中nums1 是 nums2 的子集。

對于每個 0 <= i < nums1.length ,找出滿足 nums1[i] == nums2[j] 的下標 j ,并且在 nums2 確定 nums2[j] 的 下一個更大元素 。如果不存在下一個更大元素,那么本次查詢的答案是 -1 。

返回一個長度為 nums1.length 的數組 ans 作為答案,滿足 ans[i] 是如上所述的 下一個更大元素 。

示例 1:

輸入:nums1 = [4,1,2], nums2 = [1,3,4,2].
輸出:[-1,3,-1]
解釋:nums1 中每個值的下一個更大元素如下所述:

  • 4 ,用加粗斜體標識,nums2 = [1,3,4,2]。不存在下一個更大元素,所以答案是 -1 。
  • 1 ,用加粗斜體標識,nums2 = [1,3,4,2]。下一個更大元素是 3 。
  • 2 ,用加粗斜體標識,nums2 = [1,3,4,2]。不存在下一個更大元素,所以答案是 -1 。
    示例 2:

輸入:nums1 = [2,4], nums2 = [1,2,3,4].
輸出:[3,-1]
解釋:nums1 中每個值的下一個更大元素如下所述:

  • 2 ,用加粗斜體標識,nums2 = [1,2,3,4]。下一個更大元素是 3 。
  • 4 ,用加粗斜體標識,nums2 = [1,2,3,4]。不存在下一個更大元素,所以答案是 -1 。

提示:

1 <= nums1.length <= nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 104
nums1和nums2中所有整數 互不相同
nums1 中的所有整數同樣出現在 nums2 中

進階:你可以設計一個時間復雜度為 O(nums1.length + nums2.length) 的解決方案嗎?

🌟 求解思路&實現代碼&運行結果


? 單調棧

🥦 求解思路
  1. 題目需要我們,nums1 中數字 x 的 下一個更大元素 是指 x 在 nums2 中對應位置 右側 的 第一個 比 x 大的元素。nums2中包含nums1中的元素,我們通過單調棧先在nums2中找下一個更大的元素,該過程我們額外借助一個HashMap來實現,最后在nums1中去尋找即可。
  2. 有了基本的思路,接下來我們就來通過代碼來實現一下。
🥦 實現代碼
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {int n = nums1.length;int m = nums2.length;int[] ans = new int[n];Deque<Integer> queue = new LinkedList<>();HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < m; i++) {while (!queue.isEmpty() && nums2[i] > nums2[queue.peekLast()]) {int j = queue.pollLast();map.put(nums2[j], nums2[i]);}queue.addLast(i);}for (int i = 0; i < n; i++) {ans[i] = map.getOrDefault(nums1[i], -1);}return ans;}
}
🥦 運行結果

在這里插入圖片描述


💬 共勉

最后,我想和大家分享一句一直激勵我的座右銘,希望可以與大家共勉!

在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14702.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

問題解決記錄1:nvidia-container-cli: initialization error: load library failed

本地docker運行 $ docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi 遇到這種報錯 Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error dur…

案例分享|Alluxio在自動駕駛模型訓練中的應用與部署

分享嘉賓&#xff1a; 楊林三-輝羲智能 關于輝羲智能&#xff1a; 輝羲智能致力打造創新車載智能計算平臺&#xff0c;提供高階智能駕駛芯片、易用開放工具鏈及全棧自動駕駛解決方案&#xff0c;運用獨創性“數據閉環定義芯片”方法學&#xff0c;助力車企構建低成本、大規模和…

百度生成數據庫

問題1&#xff1a; 幫我創建2個表student與score表&#xff0c;要求student表有id,createDate,userName,phone,age,sex,introduce&#xff0c; 要求score表有id,scoreName,result,studentId(student表的id外鍵)。 要求student表中插入5條學生信息&#xff0c;都要是中文的。 要…

docker flow

docker --version docker build -t tagname:version docker run --networknetwork --namename -p port:port imageName docker rmi docker rm docker images docker rm docker start docker stop

設計模式5——抽象工廠模式

寫文章的初心主要是用來幫助自己快速的回憶這個模式該怎么用&#xff0c;主要是下面的UML圖可以起到大作用&#xff0c;在你學習過一遍以后可能會遺忘&#xff0c;忘記了不要緊&#xff0c;只要看一眼UML圖就能想起來了。同時也請大家多多指教。 抽象工廠模式&#xff08;Abst…

每日5題Day8 - LeetCode 36 - 40

每一步向前都是向自己的夢想更近一步&#xff0c;堅持不懈&#xff0c;勇往直前&#xff01; 第一題&#xff1a;36. 有效的數獨 - 力扣&#xff08;LeetCode&#xff09; 題目要求我們進行判斷&#xff0c;我們不需要自己填寫&#xff0c;所以要一個標志位&#xff0c;來看當…

Rust:對 CUDA 的支持

主要歸功于Rust CUDA項目&#xff0c;該項目旨在將Rust語言推向高性能GPU計算的前沿。以下是關于Rust對CUDA支持的詳細解釋&#xff1a; Rust CUDA項目&#xff1a;這是一個開源項目&#xff0c;允許開發者在Rust中直接編譯到高度優化的PTX代碼&#xff0c;這是NVIDIA GPU上運…

Go源碼--sync庫(1)sync.Once和

簡介 這篇主要介紹 sync.Once、sync.WaitGroup和sync.Mutex sync.Once once 顧名思義 只執行一次 廢話不說 我們看源碼 英文介紹直接略過了 感興趣的建議讀一讀 獲益匪淺 其結構體如下 Once 是一個嚴格只執行一次的object type Once struct {// 建議看下源碼的注解&#xf…

首個“軟件供應鏈安全”國家標準正式發布!ToB企業震蕩,影響90%開發者

?近日&#xff0c;由開源網安深度參與編制的GB/T 43698-2024《網絡安全技術 軟件供應鏈安全要求》和GB/T 43848-2024《網絡安全技術 軟件產品開源代碼安全評價方法》兩項國家標準正式發布。 GB/T 43698-2024《網絡安全技術 軟件供應鏈安全要求》&#xff0c;是國內首個面向軟件…

Linux .eh_frame section以及libunwind

文章目錄 前言一、LSB二、The .eh_frame section2.1 簡介2.2 The Common Information Entry Format2.1.1 Augmentation String Format 2.3 The Frame Description Entry Format 三、The .eh_frame_hdr section四、libunwind五、基于Frame Pointer和基于unwind 形式的棧回溯比較…

雙向鏈表C++,C#,Java版,這些程序大多已經過測試,一直在用。

先C版吧&#xff0c;我最先用的是C#,后來是Java&#xff0c;后來改用C版的&#xff0c;因為現在一直在用C&#xff0c;單鏈 表一直沒寫上去&#xff0c;因為我很少用&#xff0c;用的是雙鏈表。 執行代碼例子1&#xff1a; int main() { _DList<_string> s…

9.STL中list的常見操作(圖文并茂)

目錄 1.list的介紹及使用 1.1.list的構造 1.2 list iterator的使用 1.3. list capacity 1.4.list modifiers 1.5.list的迭代器失效 1.list的介紹及使用 list介紹 &#xff0c;可以通過以下圖直觀的感受到 vector 和 list 的區別 Vector 插入代價高&#xff0c;但便于排…

力扣HOT100 - 72. 編輯距離

解題思路&#xff1a; 動態規劃 class Solution {public int minDistance(String word1, String word2) {int n1 word1.length();int n2 word2.length();int[][] dp new int[n1 1][n2 1];for (int j 1; j < n2; j) dp[0][j] dp[0][j - 1] 1;for (int i 1; i < …

Android Studio 使用MQTT協議開發應用時怎樣關閉MQTT連接

Android Studio 使用MQTT協議開發應用時怎樣關閉MQTT連接 Android Studio 使用MQTT協議開發應用時關閉MQTT連接 在使用mqtt開發的時候&#xff0c;有時候需要通過 返回 按鈕關閉界面或者Activity時&#xff0c;關閉當前頁面使用的mqtt連接&#xff0c;這里有兩種方式徹底銷毀…

《藝術大觀》知網藝術刊:可加急, 出刊上網快

《藝術大觀》 《藝術大觀》征文通知 《藝術大觀》期刊誠邀學者、藝術家和文化工作者積極投稿&#xff0c;共同探索藝術領域的前沿問題&#xff0c;促進學術交流和藝術創作的發展。我們歡迎各類藝術形式的研究與評論&#xff0c;包括但不限于繪畫、雕塑、音樂、舞蹈、戲劇、電…

共享IP和獨享IP之間的區別了解一下

在網絡環境中&#xff0c;代理服務器作為一種常見的工具&#xff0c;用于保護用戶隱私和拓寬網絡訪問范圍。在選擇代理服務器時&#xff0c;用戶經常會遇到共享IP和獨享IP兩種選擇。那么&#xff0c;這兩種代理方式有何區別呢&#xff1f;今天就為大家詳細解讀這個問題。 兩者…

【數據結構】排序詳解(希爾排序,快速排序,堆排序,插入排序,選擇排序,冒泡排序)

目錄 0. 前情提醒&#xff1a; 1. 插入排序 1.1 基本思想&#xff1a; 1.2 直接插入排序 實現步驟&#xff1a; 動圖演示&#xff1a; 特性總結&#xff1a; 代碼實現&#xff1a; 1.3 希爾排序&#xff08;縮小增量排序&#xff09; 基本思想&#xff1a; 步驟演示&…

AI大模型如何賦能智能座艙

AI 大模型如何賦能智能座艙 從上海車展上&#xff0c;我們看到由于智能座艙配置性價比較高&#xff0c;已經成為車企的核心競爭點之一&#xff0c;隨著座艙硬件規模化裝車&#xff0c;蔚小理、嵐圖、極狐等新勢力開始注重座艙多模態交互&#xff0c;通過集成語音/手勢/觸控打造…

Leetcode—2769. 找出最大的可達成數字【簡單】

2024每日刷題&#xff08;139&#xff09; Leetcode—2769. 找出最大的可達成數字 實現代碼 class Solution { public:int theMaximumAchievableX(int num, int t) {return num t * 2;} };運行結果 之后我會持續更新&#xff0c;如果喜歡我的文章&#xff0c;請記得一鍵三連…

【實戰】SpringBoot整合Websocket、Redis實現Websocket集群負載均衡

文章目錄 前言技術積累什么是Websocket什么是Redis發布訂閱Redis發布訂閱與消息隊列的區別 實戰演示SpringBoot整合WebsoketWebsoket集群負載均衡 實戰測試IDEA啟動兩臺服務端配置nginx負載均衡瀏覽器訪問模擬對話 前言 相信很多同學都用過websocket來實現服務端主動向客戶端推…