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

LeetCode 面試題 03.02. 棧的最小值

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode 面試題 03.02. 棧的最小值。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、題目

??請?jiān)O(shè)計(jì)一個(gè)棧,除了常規(guī)棧支持的 poppush 函數(shù)以外,還支持 min 函數(shù),該函數(shù)返回棧元素中的最小值。執(zhí)行 push、popmin 操作的時(shí)間復(fù)雜度必須為 O(1)

??點(diǎn)擊此處跳轉(zhuǎn)題目。

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

二、C# 題解

??要實(shí)現(xiàn) O(1) 復(fù)雜度的 min 函數(shù),只需多使用一個(gè)數(shù)組記錄最小值即可:文章來源地址http://www.zghlxwxcb.cn/news/detail-693930.html

public class MinStack {
    private List<int> data; // 存放棧數(shù)據(jù)
    private List<int> mins; // 存放對應(yīng)棧的最小值

    private int p;          // 棧頂指針

    /** initialize your data structure here. */
    public MinStack() {
        data = new List<int>(128);
        mins = new List<int>(128);
        p = -1;
    }
    
    public void Push(int x) {
        data.Add(x);
        if (p == -1) mins.Add(x);
        else mins.Add(x < mins[p] ? x : mins[p]); // 比較 x 與 min,放入更小的一個(gè)
        p++;
    }
    
    public void Pop() {
        if (p == -1) return;
        data.RemoveAt(p);
        mins.RemoveAt(p);
        p--;
    }
    
    public int Top() {
        return data[p];
    }
    
    public int GetMin() {
        return mins[p];
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.Push(x);
 * obj.Pop();
 * int param_3 = obj.Top();
 * int param_4 = obj.GetMin();
 */
  • 時(shí)間復(fù)雜度: O ( n ) O(n) O(n)。
  • 空間復(fù)雜度: O ( 1 ) O(1) O(1)

到了這里,關(guān)于LeetCode 面試題 03.02. 棧的最小值的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • LeetCode 面試題 03.04. 化棧為隊(duì)

    ??實(shí)現(xiàn)一個(gè)MyQueue類,該類用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列。 ??點(diǎn)擊此處跳轉(zhuǎn)題目。 示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false 說明: 你只能使用標(biāo)準(zhǔn)的棧操作 – 也就是只有 push to top , peek/pop from top , s

    2024年02月09日
    瀏覽(14)
  • LeetCode 面試題 02.08. 環(huán)路檢測

    LeetCode 面試題 02.08. 環(huán)路檢測

    ??給定一個(gè)鏈表,如果它是有環(huán)鏈表,實(shí)現(xiàn)一個(gè)算法返回環(huán)路的開頭節(jié)點(diǎn)。若環(huán)不存在,請返回 null 。 ??如果鏈表中有某個(gè)節(jié)點(diǎn),可以通過連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中的環(huán),我們使用整數(shù) pos 來表示鏈表尾連接到鏈表中的位置(索

    2024年02月10日
    瀏覽(19)
  • leetcode 面試題 02.02. 返回倒數(shù)第k個(gè)節(jié)點(diǎn)

    leetcode 面試題 02.02. 返回倒數(shù)第k個(gè)節(jié)點(diǎn)

    提建議就是,有些題還是有聯(lián)系的,建議就收看完? 876.鏈表的中間節(jié)點(diǎn)( ) ,再將這一題聯(lián)系起來 題目: 實(shí)現(xiàn)一種算法,找出單向鏈表中倒數(shù)第 k 個(gè)節(jié)點(diǎn)。返回該節(jié)點(diǎn)的值。 說明: 給定的 k 保證是有效的。 題目鏈接 力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺 文

    2024年02月04日
    瀏覽(19)
  • LeetCode 面試題 02.02. 返回倒數(shù)第 k 個(gè)節(jié)點(diǎn)

    ??實(shí)現(xiàn)一種算法,找出單向鏈表中倒數(shù)第 k 個(gè)節(jié)點(diǎn)。返回該節(jié)點(diǎn)的值。 ??注意:本題相對原題稍作改動 ??點(diǎn)擊此處跳轉(zhuǎn)題目。 示例: 輸入: 1-2-3-4-5 和 k = 2 輸出: 4 說明: 給定的 k 保證是有效的。 ??先遍歷一遍求總結(jié)點(diǎn)數(shù) n,再順序?qū)ふ业?n - k + 1 個(gè)節(jié)點(diǎn)就可以了

    2024年02月11日
    瀏覽(16)
  • leetcode 面試題 02.07. 鏈表相交

    leetcode 面試題 02.07. 鏈表相交

    題目:leetcode 面試題 02.07. 鏈表相交 描述: 給你兩個(gè)單鏈表的頭節(jié)點(diǎn) headA 和 headB ,請你找出并返回兩個(gè)單鏈表相交的起始節(jié)點(diǎn)。如果兩個(gè)鏈表沒有交點(diǎn),返回 null 。 圖示兩個(gè)鏈表在節(jié)點(diǎn) c1 開始相交: 思路: 簡單來說,就是求兩個(gè)鏈表交點(diǎn)節(jié)點(diǎn)的指針。 這里要注意,交點(diǎn)

    2024年02月13日
    瀏覽(19)
  • LeetCode 面試題 02.04. 分割鏈表

    LeetCode 面試題 02.04. 分割鏈表

    ??給你一個(gè)鏈表的頭節(jié)點(diǎn) head 和一個(gè)特定值 x ,請你對鏈表進(jìn)行分隔,使得所有 小于 x 的節(jié)點(diǎn)都出現(xiàn)在 大于或等于 x 的節(jié)點(diǎn)之前。 ??你不需要 保留 每個(gè)分區(qū)中各節(jié)點(diǎn)的初始相對位置。 ??點(diǎn)擊此處跳轉(zhuǎn)題目。 示例 1: 輸入:head = [1,4,3,2,5,2], x = 3 輸出:[1,2,2,4,3,5] 示例

    2024年02月11日
    瀏覽(21)
  • leetcode 面試題 02.05 鏈表求和

    leetcode 面試題 02.05 鏈表求和

    ?? leetcode鏈接:面試題 02.05 鏈表求和 ps: 首先定義一個(gè)頭尾指針 head 、 tail ,這里的 tail 是方便我們尾插,每次不需要遍歷找尾,由于這些數(shù)是反向存在的,所以我們直接加起來若大于等于 10 則進(jìn)位,進(jìn)位的數(shù)字加到下一位的數(shù)字和上,需要注意的是,當(dāng)任意一個(gè)鏈表結(jié)束

    2024年02月12日
    瀏覽(21)
  • LeetCode 面試題 02.01. 移除重復(fù)節(jié)點(diǎn)

    ??編寫代碼,移除未排序鏈表中的重復(fù)節(jié)點(diǎn)。保留最開始出現(xiàn)的節(jié)點(diǎn)。 ??點(diǎn)擊此處跳轉(zhuǎn)題目。 示例1: 輸入:[1, 2, 3, 3, 2, 1] 輸出:[1, 2, 3] 示例2: 輸入:[1, 1, 1, 1, 2] 輸出:[1, 2] 提示: 鏈表長度在[0, 20000]范圍內(nèi)。 鏈表元素在[0, 20000]范圍內(nèi)。 進(jìn)階: 如果不得使用臨時(shí)緩沖

    2024年02月11日
    瀏覽(15)
  • leetcode刷題記錄:二叉樹02(思路篇)

    參考labuladong的算法小抄:https://labuladong.online/algo/data-structure/binary-tree-part1/ 復(fù)習(xí)二叉樹綱領(lǐng)篇,二叉樹解題的思維模式分兩類: 1、是否可以通過遍歷一遍二叉樹得到答案?如果可以,用一個(gè) traverse 函數(shù)配合外部變量來實(shí)現(xiàn),這叫「遍歷」的思維模式。 2、是否可以定義一個(gè)

    2024年02月19日
    瀏覽(24)
  • LeetCode 面試題 01.02. 判定是否互為字符重排

    ? ??給定兩個(gè)由小寫字母組成的字符串 s1 和 s2,請編寫一個(gè)程序,確定其中一個(gè)字符串的字符重新排列后,能否變成另一個(gè)字符串,點(diǎn)擊此處跳轉(zhuǎn)。 示例 1: 輸入: s1 = “abc”, s2 = “bca” 輸出: true 示例 2: 輸入: s1 = “abc”, s2 = “bad” 輸出: false 說明: 0 = len(s1) = 100 0

    2024年02月12日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包