在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

LeetCode初級算法-設計問題02:最小棧

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-10 22:21 ? 次閱讀

LeetCode初級算法--設計問題02:最小棧

一、引子

這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。

二、題目

設計一個支持 push,pop,top 操作,并能在常數時間內檢索到最小元素的棧。

  • push(x) -- 將元素 x 推入棧中。
  • pop() -- 刪除棧頂的元素。
  • top() -- 獲取棧頂元素。
  • getMin() -- 檢索棧中的最小元素。

示例:

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

1、思路

第一種方法:

用列表模擬棧,push、pop、top和getMin分別對應list.append()、list.pop()、list[-1]和min()操作

第二種方法:

引入minStack列表存放最小值

2、編程實現

第一種方法:

python

class MinStack(object):

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.l = []
        

    def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        if x is None:
            pass
        else:
            self.l.append(x)
        

    def pop(self):
        """
        :rtype: None
        """
        if self.l is None:
            return 'error'
        else:
            self.l.pop(-1)
        

    def top(self):
        """
        :rtype: int
        """
        if self.l is None:
            return 'error'
        else:
            return self.l[-1]
        

    def getMin(self):
        """
        :rtype: int
        """
        if self.l is None:
            return 'error'
        else:
            return min(self.l)


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()

第二種方法:

class MinStack(object):
 
    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack = []       #存放所有元素
        self.minStack = []#存放每一次壓入數據時,棧中的最小值(如果壓入數據的值大于棧中的最小值就不需要重復壓入最小值,小于或者等于棧中最小值則需要壓入)
 
    def push(self, x):
        """
        :type x: int
        :rtype: void
        """
        self.stack.append(x)
        if not self.minStack or self.minStack[-1]>=x:
            self.minStack.append(x)
 
    def pop(self):   #移除棧頂元素時,判斷是否移除棧中最小值
        """
        :rtype: void
        """
        if self.minStack[-1]==self.stack[-1]:
            del self.minStack[-1]
        self.stack.pop()
 
    def top(self):
        """
        :rtype: int
        """
        return self.stack[-1]
        
    def getMin(self):
        """
        :rtype: int
        """
        return self.minStack[-1]

本文由博客一文多發平臺 OpenWrite 發布!

審核編輯 黃昊宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1791

    文章

    47279

    瀏覽量

    238511
  • 機器學習
    +關注

    關注

    66

    文章

    8418

    瀏覽量

    132646
  • 深度學習
    +關注

    關注

    73

    文章

    5503

    瀏覽量

    121170
  • leetcode
    +關注

    關注

    0

    文章

    20

    瀏覽量

    2328
收藏 人收藏

    評論

    相關推薦

    曙光云開啟全智能時代

    近日,“全可信 云中生智”曙光云戰略發布會召開。曙光云從首創“城市云”進化到實現“全智能云”,打造“云智、云安、云算、云數”四位一體能力體系,深度賦能千行百業數智化轉型升級。
    的頭像 發表于 12-19 15:11 ?241次閱讀

    常見的lvs負載均衡算法

    常見的lvs負載均衡算法包括輪詢(RR)、加權輪詢(WRR)、最小連接(LC)、加權最小連接(WLC)、基于局部性的最少鏈接(LBLC)、帶復制的LBLC(LBLCR)、目標地址散列(DH)、源地址
    的頭像 發表于 12-12 13:50 ?82次閱讀

    λ-IO:存儲計算下的IO設計

    動機和背景? ? 存儲計算存儲資源的充分利用。IO是管理存儲器的的基本組件,包括設備驅動、塊接口層、文件系統,目前一些用戶空間IO庫(如SPDK)有效降低了延遲,但是io仍然不可或缺。這是因為1
    的頭像 發表于 12-02 10:35 ?203次閱讀
    λ-IO:存儲計算下的IO<b class='flag-5'>棧</b>設計

    RVBacktrace RISC-V極簡回溯組件

    RVBacktrace組件簡介一個極簡的RISC-V回溯組件。功能在需要的地方調用組件提供的唯一API,開始當前環境的回溯支持輸出addr2line需要的命令,使用addr2line進行棧回溯支持結合反匯編,回溯信息圖表化
    的頭像 發表于 09-15 08:12 ?384次閱讀
    RVBacktrace RISC-V極簡<b class='flag-5'>棧</b>回溯組件

    明緯電源DETN02-N系列非穩壓轉換器產品概述

    MEAN WELL明緯電源DETN02系列具體型號:DETN02L-05,DETN02L-12,DETN02L-15,DETN02M-05,
    的頭像 發表于 09-12 09:18 ?446次閱讀
    明緯電源DETN<b class='flag-5'>02</b>-N系列非穩壓轉換器產品概述

    Linux網絡協議的實現

    網絡協議是操作系統核心的一個重要組成部分,負責管理網絡通信中的數據包處理。在 Linux 操作系統中,網絡協議(Network Stack)負責實現 TCP/IP 協議簇,處理應用程序發起的網絡
    的頭像 發表于 09-10 09:51 ?314次閱讀
    Linux網絡協議<b class='flag-5'>棧</b>的實現

    PA02 PA02A功率運算放大器

    pa02u
    發表于 09-03 14:17 ?0次下載

    TCP/IP協議的設計與實現_中文

    電子發燒友網站提供《TCP/IP協議的設計與實現_中文.pdf》資料免費下載
    發表于 07-03 11:28 ?4次下載

    Microchip TCP/IP 協議應用筆記

    電子發燒友網站提供《Microchip TCP/IP 協議應用筆記.pdf》資料免費下載
    發表于 04-17 14:16 ?1次下載

    物聯數據網關是什么?

    物聯數據網關就是物聯網智能網關。 物聯數據網關是物聯網架構中的重要組件之一。它是連接物聯網設備和云平臺的中間設備,負責將物聯網設備采集到的數據傳輸到云平臺,并將云平臺下發的指令傳輸給物聯網設備
    的頭像 發表于 03-29 17:10 ?318次閱讀

    ethernetif_input和tcpip協議線程的作用

    tcpip協議線程是lwIP協議的核心線程,負責處理TCP/IP協議的各種功能,包括TCP連接管理、IP數據報的路由和轉發、以及UDP數據包的處理等。
    的頭像 發表于 03-20 10:01 ?1350次閱讀

    初級線圈和次級線圈電流關系

    在電磁學和電工學中,初級線圈和次級線圈是經常被用到的概念。初級線圈通常指的是提供電源的線圈,而次級線圈則指的是從初級線圈中導出的線圈。初級線圈和次級線圈之間存在一定的電流關系,本文將詳
    的頭像 發表于 03-09 09:30 ?4361次閱讀

    四路2輸入NOR門74HC02; 74HCT02數據手冊

    電子發燒友網站提供《四路2輸入NOR門74HC02; 74HCT02數據手冊.pdf》資料免費下載
    發表于 02-21 10:57 ?0次下載
    四路2輸入NOR門74HC<b class='flag-5'>02</b>; 74HCT<b class='flag-5'>02</b>數據手冊

    四路2輸入NOR門74AHC02; 74AHCT02數據手冊

    電子發燒友網站提供《四路2輸入NOR門74AHC02; 74AHCT02數據手冊.pdf》資料免費下載
    發表于 02-19 14:29 ?0次下載
    四路2輸入NOR門74AHC<b class='flag-5'>02</b>; 74AHCT<b class='flag-5'>02</b>數據手冊

    堆和的區別和使用注意事項

    堆和是在計算機科學中廣泛使用的兩種數據結構,它們具有不同的用途和特點。堆和的區別涉及到內存分配、訪問方式、數據存儲等方面。在使用堆和時,還需要注意一些細節,以確保程序的正確性和效率。本文將詳細
    的頭像 發表于 01-18 17:24 ?2222次閱讀
    主站蜘蛛池模板: 欧美超级碰碰| 免费爱爱视频| 性色综合| 欧美成人伊人十综合色| 亚洲激情综合| 黄a免费| 老师在办公室被躁得舒服小说| 日日摸人人拍人人澡| 一级片免费在线观看| 免费h网站在线观看| 特黄特色大片免费播放器9 | 久久精品国产精品亚洲精品| 日韩免费一级毛片| 激情五月婷婷色| 久久久这里有精品999| 最新黄色地址| 国产一级特黄一级毛片| 国产精品福利视频手机免费观看| 99在线热播精品免费| 狠狠狠| 亚洲激情四射| 色播视频网站| 天天操天天玩| 中文天堂在线观看| 国产高清一区二区| 手机看片日韩1024| 岬奈奈美在线 国产一区| 久久久五月| www.狠狠艹| 尤物啪啪| freesexvideo性大全| 亚洲视频四区| 久久精品亚洲一区二区三区浴池| 狠狠操天天操夜夜操| 神马电影天堂网| 天天操天天摸天天爽| 最近的中文字幕免费动漫视频| 国产成人精品日本| 狠狠操狠狠干| 四虎最新永久免费网址| 天天操狠狠操夜夜操|