最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言題解LeetCode下一個更大元素示例詳解

 更新時間:2022年12月30日 10:29:12   作者:劉09k11  
這篇文章主要為大家介紹了Go語言題解LeetCode下一個更大元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目描述

原題鏈接 :

496. 下一個更大元素 I - 力扣(LeetCode) (leetcode-cn.com)

nums1 中數(shù)字 x 的 下一個更大元素 是指 x 在 nums2 中對應(yīng)位置 右側(cè)第一個 比 x 大的元素。

給你兩個 沒有重復(fù)元素 的數(shù)組 nums1 和 nums2 ,下標(biāo)從 0 開始計數(shù),其中nums1 是 nums2 的子集。

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

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

示例 1:

輸入:nums1 = [4,1,2], nums2 = [1,3,4,2].
輸出:[-1,3,-1]
解釋:nums1 中每個值的下一個更大元素如下所述:
- 4 ,用加粗斜體標(biāo)識,nums2 = [1,3,4,2]。不存在下一個更大元素,所以答案是 -1 。
- 1 ,用加粗斜體標(biāo)識,nums2 = [1,3,4,2]。下一個更大元素是 3 。
- 2 ,用加粗斜體標(biāo)識,nums2 = [1,3,4,2]。不存在下一個更大元素,所以答案是 -1 。

示例 2:

輸入:nums1 = [2,4], nums2 = [1,2,3,4].
輸出:[3,-1]
解釋:nums1 中每個值的下一個更大元素如下所述:
- 2 ,用加粗斜體標(biāo)識,nums2 = [1,2,3,4]。下一個更大元素是 3 。
- 4 ,用加粗斜體標(biāo)識,nums2 = [1,2,3,4]。不存在下一個更大元素,所以答案是 -1 。

提示:

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

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

  • nums1和nums2中所有整數(shù) 互不相同
  • nums1 中的所有整數(shù)同樣出現(xiàn)在 nums2 中

思路分析

這種題目典型的使用單調(diào)棧就行了啊。

  • 元素入棧之后,其下面的元素一定是其左邊第一個比它小的數(shù);(可用來求每個元素左邊更小的第一個元素)
  • 若在元素插入之前,棧頂元素比插入元素更大,那么棧頂元素一定是待插入元素左邊一個更大的數(shù)
  • 若在元素插入之前,棧頂元素比插入元素更大,那么棧頂元素一定是所有需要出棧的元素右邊更小的數(shù);(可用來求每個元素右邊更小的第一個元素)
  • 最后一定會留下最小的數(shù)(對較小 的數(shù)更有利)

AC 代碼

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        map<int,int> PMap;
        stack<int> DStack;
        vector<int> result;
        for(int i=nums2.size()-1;i>=0;i--){
            if(DStack.empty()){
                PMap.insert({nums2[i],-1});
                DStack.push(nums2[i]);
            }
            else if(DStack.top()>nums2[i]){
                PMap.insert({nums2[i],DStack.top()});
                DStack.push(nums2[i]);
            }
            else{
                while(!DStack.empty()&&DStack.top()<nums2[i])
                   DStack.pop();
                if(DStack.empty())
                   PMap.insert({nums2[i],-1});
                else
                   PMap.insert({nums2[i],DStack.top()}); 
                DStack.push(nums2[i]);
            }
        }
        for(int i=0;i<nums1.size();i++)
            result.push_back(PMap[nums1[i]]); 
        return result;
    }
};

以上就是Go語言題解LeetCode下一個更大元素示例詳解的詳細(xì)內(nèi)容,更多關(guān)于go題解下一個更大元素的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語言使用defer+recover解決panic導(dǎo)致程序崩潰的問題

    Go語言使用defer+recover解決panic導(dǎo)致程序崩潰的問題

    如果協(xié)程出現(xiàn)了panic,就會造成程序的崩潰,這時可以在goroutine中使用recover來捕獲panic,進(jìn)行處理,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-09-09
  • go?tar包歸檔文件處理操作全面指南

    go?tar包歸檔文件處理操作全面指南

    這篇文章主要為大家介紹了使用go?tar包歸檔文件處理操作全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • GoPath模式和GoMoudle模式的相愛相殺

    GoPath模式和GoMoudle模式的相愛相殺

    這篇文章主要介紹了GoPath模式和GoMoudle模式的相愛相殺,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Go語言常見錯誤之誤用init函數(shù)實例解析

    Go語言常見錯誤之誤用init函數(shù)實例解析

    Go語言中的init函數(shù)為開發(fā)者提供了一種在程序正式運行前初始化包級變量的機(jī)制,然而,由于init函數(shù)的特殊性,不當(dāng)?shù)厥褂盟赡芤鹨幌盗袉栴},本文將深入探討如何有效地使用init函數(shù),列舉常見誤用并提供相應(yīng)的避免策略
    2024-01-01
  • golang Gorm與數(shù)據(jù)庫完整性約束詳解

    golang Gorm與數(shù)據(jù)庫完整性約束詳解

    這篇文章主要介紹了golang Gorm與數(shù)據(jù)庫完整性約束詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • GO語言支付寶沙箱對接的實現(xiàn)

    GO語言支付寶沙箱對接的實現(xiàn)

    本文介紹了如何使用GO語言對接支付寶沙箱環(huán)境,包括秘鑰生成、SDK安裝和代碼實現(xiàn)等步驟,詳細(xì)內(nèi)容涵蓋了從秘鑰生成到前端代碼的每個階段,為開發(fā)者提供了一條清晰的指引
    2024-09-09
  • Golang 串口通信的實現(xiàn)示例

    Golang 串口通信的實現(xiàn)示例

    串口通信是一種常見的硬件通信方式,用于在計算機(jī)和外部設(shè)備之間傳輸數(shù)據(jù),本文主要介紹了Golang 串口通信的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 最新評論

    兴安盟| 临安市| 双鸭山市| 孝感市| 灵寿县| 磐石市| 蒲江县| 南通市| 阜阳市| 江西省| 长丰县| 漳州市| 海伦市| 廊坊市| 正定县| 岐山县| 洞口县| 沛县| 海门市| 留坝县| 云南省| 信阳市| 宁陵县| 浮山县| 岳池县| 鹤岗市| 钦州市| 库伦旗| 贡嘎县| 阿城市| 玉屏| 舞钢市| 闻喜县| 嘉黎县| 平顺县| 桂平市| 永福县| 吐鲁番市| 辽宁省| 龙门县| 洪雅县|