日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指Offer:包含main函数的栈(借助辅助栈)

發布時間:2025/4/16 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指Offer:包含main函数的栈(借助辅助栈) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間復雜度應為O(1))。

解題思路

筆試時,能通過為大。如果能使用 Java 庫中的數據數據和方法就盡量使用。

思路:對 Stack 的原有方法進行封裝,數據存入棧 data之中,并借助一個輔助棧 min 來存放最小值。

入棧時,data 棧正常入棧;然后將 node 與 min棧的棧頂元素比較大小,如果 min 棧頂為空或者 node 較小就入輔助棧 min ,否則不如 min 棧。

出棧時,min 的棧頂元素若與棧data 的棧頂元素一樣,則棧min 也需要出棧;否則棧min 不執行出棧。

Java 代碼

import java.util.Stack;public class Solution {private Stack<Integer> data = new Stack<>();private Stack<Integer> min = new Stack<>();public void push(int node) {data.push(node);if (min.isEmpty() || node < min.peek()) {min.push(node);}}public void pop() {if (data.peek() == min.peek()) {data.pop();min.pop();} else {data.pop();}}public int top() {return data.peek();}public int min() {return min.peek();} }

復雜度分析:

  • 時間復雜度:O(1) --> 因為直接使用了棧的數據結構,出棧入棧的時間復雜度為 O(1)

總結

以上是生活随笔為你收集整理的剑指Offer:包含main函数的栈(借助辅助栈)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。