国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-08 02:23:02
字體:
來源:轉載
供稿:網友

定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。要求:使得時間復雜度都是O(1)

完成如下的函數:

import java.util.Stack;public class Solution {        public void push(int node) {            }        public void pop() {            }        public int top() {            }        public int min() {            }}

思路:用空間換時間,用一個輔助棧記錄當前棧中的最小值。輔助棧元素個數和數據棧保持一樣的數目。例如一次壓入數據棧數字序列為:

3,2,4,1,5  那么一次壓入輔助棧的為:3,2,2,1,1

當每次壓入數據棧的元素小余輔助站的元素的時候,才把新元素壓入輔助棧,否則把輔助站棧頂元素去到壓入輔助棧,保持兩個棧元素個數一致。

備注:Stack.Peek 與 stack.pop 的區別

相同點:大家都返回棧頂的值。

不同點:peek 不改變棧的值(不刪除棧頂的值),pop會把棧頂的值刪除。

package com.mytest.mymain;import java.util.Stack;public class MinStack {    PRivate Stack<Integer> data_stack=new Stack<Integer>();    private Stack<Integer> min_stack=new Stack<Integer>();        public void push(int node) {//進棧        if(min_stack.isEmpty() ||min_stack.peek()>=node){        	min_stack.push(node);        }else{        	min_stack.push(min_stack.peek());        }        data_stack.push(node);    }        public void pop() {//出棧    	if(data_stack.empty() || min_stack.empty())    		return;    	    	data_stack.pop();    	min_stack.pop();    }        public int top() {//取得棧頂元素    	if(!data_stack.empty()){	          return data_stack.peek();    	}    	return 0;    }        public int min() {//取得最小值    	if(!min_stack.empty()){    		        return min_stack.peek();    }    	return 0;    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禹城市| 辰溪县| 比如县| 荃湾区| 榆树市| 房产| 汉中市| 桐庐县| 舟曲县| 普陀区| 涟源市| 沛县| 灵山县| 弋阳县| 本溪市| 郸城县| 临猗县| 马龙县| 诸暨市| 石河子市| 青铜峡市| 宁阳县| 嵩明县| 宁晋县| 怀集县| 柞水县| 宽城| 建平县| 彝良县| 武威市| 镇坪县| 陇川县| 会宁县| 正宁县| 瑞昌市| 榆林市| 安吉县| 宣汉县| 剑川县| 沁源县| 彰武县|