国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

算法|Day51 單調(diào)棧2

這篇具有很好參考價(jià)值的文章主要介紹了算法|Day51 單調(diào)棧2。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

LeetCode 503- 下一個(gè)更大元素 II

題目鏈接:力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長(zhǎng)平臺(tái)

題目描述:給定一個(gè)循環(huán)數(shù)組 nums ( nums[nums.length - 1] 的下一個(gè)元素是 nums[0] ),返回 nums 中每個(gè)元素的 下一個(gè)更大元素 。

數(shù)字 x 的 下一個(gè)更大的元素 是按數(shù)組遍歷順序,這個(gè)數(shù)字之后的第一個(gè)比它更大的數(shù),這意味著你應(yīng)該循環(huán)地搜索它的下一個(gè)更大的數(shù)。如果不存在,則輸出 -1 。

解題思路

  1. 本題也是單調(diào)棧的一個(gè)應(yīng)用,和溫度那題一模一樣,就是多了一個(gè)循環(huán),數(shù)組成環(huán)了該怎么處理,首先就想到把給定的數(shù)組和自己拼接起來(lái),當(dāng)做新的數(shù)組,再用單調(diào)棧操作即可,但這樣會(huì)導(dǎo)致很多冗余的操作。所以想到取余來(lái)算,模擬拼接了數(shù)組的情況。
// 版本二
class Solution {
public:
    vector<int> nextGreaterElements(vector<int>& nums) {
        vector<int> result(nums.size(), -1);
        if (nums.size() == 0) return result;
        stack<int> st;
        for (int i = 0; i < nums.size() * 2; i++) {
            // 模擬遍歷兩邊nums,注意一下都是用i % nums.size()來(lái)操作
            while (!st.empty() && nums[i % nums.size()] > nums[st.top()]) {
                result[st.top()] = nums[i % nums.size()];
                st.pop();
            }
            st.push(i % nums.size());
        }
        return result;
    }
};

總結(jié):

  • 單調(diào)棧加環(huán)形數(shù)組的應(yīng)用。

LeetCode 42- 接雨水

題目鏈接:力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長(zhǎng)平臺(tái)

題目描述:給定 n 個(gè)非負(fù)整數(shù)表示每個(gè)寬度為 1 的柱子的高度圖,計(jì)算按此排列的柱子,下雨之后能接多少雨水。

解題思路

用單調(diào)棧來(lái)解題,遞增的單調(diào)棧,由于棧頂每次都是最小的元素,我們接雨水其實(shí)就是找中間元素的左邊第一個(gè)比他高的元素和右邊第一個(gè)比他高的元素。右邊第一個(gè)比他高的元素我們可以在入棧之前判斷,而左邊第一個(gè)比他高的元素,就是他在棧中的下面的一個(gè)元素。

算法|Day51 單調(diào)棧2,算法,leetcode,職場(chǎng)和發(fā)展

class Solution {
public:
    int trap(vector<int>& height) {
        if (height.size() <= 2) return 0; // 可以不加
        stack<int> st; // 存著下標(biāo),計(jì)算的時(shí)候用下標(biāo)對(duì)應(yīng)的柱子高度
        st.push(0);
        int sum = 0;
        for (int i = 1; i < height.size(); i++) {
            if (height[i] < height[st.top()]) {     // 情況一
                st.push(i);
            } if (height[i] == height[st.top()]) {  // 情況二
                st.pop(); // 其實(shí)這一句可以不加,效果是一樣的,但處理相同的情況的思路卻變了。
                st.push(i);
            } else {                                // 情況三
                while (!st.empty() && height[i] > height[st.top()]) { // 注意這里是while
                    int mid = st.top();
                    st.pop();
                    if (!st.empty()) {
                        int h = min(height[st.top()], height[i]) - height[mid];
                        int w = i - st.top() - 1; // 注意減一,只求中間寬度
                        sum += h * w;
                    }
                }
                st.push(i);
            }
        }
        return sum;
    }
};

總結(jié):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-708456.html

  • 單調(diào)棧的應(yīng)用,需要多想想為什么這里能用到單調(diào)棧。

到了這里,關(guān)于算法|Day51 單調(diào)棧2的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 算法|Day52 單調(diào)棧3

    算法|Day52 單調(diào)棧3

    LeetCode 84.柱狀圖中最大的矩形 題目鏈接:力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長(zhǎng)平臺(tái) 題目描述 :給定 n 個(gè)非負(fù)整數(shù),用來(lái)表示柱狀圖中各個(gè)柱子的高度。每個(gè)柱子彼此相鄰,且寬度為 1 。 求在該柱狀圖中,能夠勾勒出來(lái)的矩形的最大面積。 解題思路 這題我們就是

    2024年02月09日
    瀏覽(13)
  • 力扣算法刷題Day59|單調(diào)棧

    力扣題目:# 503.下一個(gè)更大元素II? 刷題時(shí)長(zhǎng):參考題解后2min 解題方法:?jiǎn)握{(diào)棧 復(fù)雜度分析 時(shí)間O(n) 空間O(n) 問(wèn)題總結(jié) 如何解決環(huán)的問(wèn)題 本題收獲 循環(huán)數(shù)組解決方案 思路一:將兩個(gè)nums數(shù)組拼接在一起,使用單調(diào)棧計(jì)算出每一個(gè)元素的下一個(gè)最大值,最后再把結(jié)果集即res

    2024年02月13日
    瀏覽(31)
  • DAY40:貪心算法(九)單調(diào)遞增的數(shù)字(貪心的思路)

    DAY40:貪心算法(九)單調(diào)遞增的數(shù)字(貪心的思路)

    本題暴力解法也需要看一下,雖然暴力解法超時(shí)了,但是這種思路是一種很基礎(chǔ)的思路,需要了解 數(shù)字是沒有辦法直接采用下標(biāo)遍歷的 ,如果 要for循環(huán)遍歷每個(gè)位置的數(shù)字,需要把數(shù)字轉(zhuǎn)成字符串string 當(dāng)且僅當(dāng)每個(gè)相鄰位數(shù)上的數(shù)字 x 和 y 滿足 x = y 時(shí),我們稱這個(gè)整數(shù)是

    2024年02月12日
    瀏覽(17)
  • 算法刷題Day 37 單調(diào)遞增的數(shù)字+監(jiān)聽二叉樹

    兩個(gè)可能經(jīng)常要用到的函數(shù) 字符串轉(zhuǎn)數(shù)字: to_string() 數(shù)字轉(zhuǎn)字符串: stoi() 利用樹后續(xù)遍歷,同時(shí)加上狀態(tài)轉(zhuǎn)移的方法,非常值得反復(fù)學(xué)習(xí)

    2024年02月13日
    瀏覽(23)
  • 【leetcode:1944. 隊(duì)列中可以看到的人數(shù)】單調(diào)棧算法及其相關(guān)問(wèn)題

    1944. 隊(duì)列中可以看到的人數(shù) 有? n ?個(gè)人排成一個(gè)隊(duì)列, 從左到右 ?編號(hào)為? 0 ?到? n - 1 ?。給你以一個(gè)整數(shù)數(shù)組? heights ?,每個(gè)整數(shù)? 互不相同 , heights[i] ?表示第? i ?個(gè)人的高度。 一個(gè)人能? 看到 ?他右邊另一個(gè)人的條件是這兩人之間的所有人都比他們兩人? 矮 ?。更

    2024年01月25日
    瀏覽(19)
  • [職場(chǎng)] 會(huì)計(jì)學(xué)專業(yè)學(xué)什么 #其他#知識(shí)分享#職場(chǎng)發(fā)展

    [職場(chǎng)] 會(huì)計(jì)學(xué)專業(yè)學(xué)什么 #其他#知識(shí)分享#職場(chǎng)發(fā)展

    會(huì)計(jì)學(xué)專業(yè)學(xué)什么 會(huì)計(jì)學(xué)專業(yè)屬于工商管理學(xué)科下的一個(gè)二級(jí)學(xué)科,本專業(yè)培養(yǎng)具備財(cái)務(wù)、管理、經(jīng)濟(jì)、法律等方面的知識(shí)和能力,具有分析和解決財(cái)務(wù)、金融問(wèn)題的基本能力,能在企、事業(yè)單位及政府部門從事會(huì)計(jì)實(shí)務(wù)以及教學(xué)、科研方面工作的工商管理學(xué)科高級(jí)專門人才

    2024年02月20日
    瀏覽(34)
  • 學(xué)習(xí)平臺(tái)助力職場(chǎng)發(fā)展與提升

    學(xué)習(xí)平臺(tái)助力職場(chǎng)發(fā)展與提升

    近年來(lái),隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展, 學(xué)習(xí)平臺(tái) 逐漸成為了職場(chǎng)發(fā)展和提升的必備工具。學(xué)習(xí)平臺(tái)通過(guò)提供豐富的課程內(nèi)容、靈活的學(xué)習(xí)時(shí)間和個(gè)性化的學(xué)習(xí)路徑,幫助職場(chǎng)人士更好地提升自己的技能和知識(shí)儲(chǔ)備,為職場(chǎng)發(fā)展打下堅(jiān)實(shí)的基礎(chǔ)。 學(xué)習(xí)平臺(tái)的優(yōu)勢(shì)在于提供了豐富多

    2024年02月11日
    瀏覽(28)
  • [100天算法】-全排列 II(day 51)

    時(shí)間復(fù)雜度: 空間復(fù)雜度: JavaScript Code

    2024年02月06日
    瀏覽(12)
  • 【算法練習(xí)Day51】柱狀圖中最大的矩形

    【算法練習(xí)Day51】柱狀圖中最大的矩形

    ???個(gè)人主頁(yè):@Sherry的成長(zhǎng)之路 ??學(xué)習(xí)社區(qū):Sherry的成長(zhǎng)之路(個(gè)人社區(qū)) ??專欄鏈接:練題 ?? 長(zhǎng)路漫漫浩浩,萬(wàn)事皆有期待 力扣題目鏈接 給定 n 個(gè)非負(fù)整數(shù),用來(lái)表示柱狀圖中各個(gè)柱子的高度。每個(gè)柱子彼此相鄰,且寬度為 1 。 求在該柱狀圖中,能夠勾勒出來(lái)的矩

    2024年01月22日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包