棧在o 1 時間獲取最小元素

2021-06-26 00:50:33 字數 761 閱讀 9191

pop,push裡面都為o(1),這裡只有時間複雜度的要求,但是沒有空間複雜度的要求:

思路1:原來的棧裡面只有乙個陣列,來存放所有的push值,現在,多乙個用來存放最小值得棧,如果新進元素的值比最小值棧裡面棧頂的元素要小,就push到最小值棧,其它情況不變。

思路2:將放資料的單獨列出,放在乙個類裡面,每乙個資料都知道最小值是什麼。

思路一**:

class stackofmine

int topofstack=-1;

int topofminstack=-1;

public boolean isempty()

public boolean isfull()

public int getmin()

public int gettopelem()

public void push(int a)else

}}else

}public int pop()

return temp;}}

//思路2**

class mystack

}int topofstack=-1;

public void push(int b)

public int pop()

public int getmin()

}class elem

public void setmin(int m)

public int getmin()

public int getdata()

}

O 1 時間求出棧內元素最小值

問題描述 對現在的stack 棧 資料結構進行改進,加乙個min 功能,使之能在常數,即o 1 時間內給出棧中的最小值。可對push 和pop 函式進行修改,但要求其時間複雜度都只能是o 1 解決方案 在棧的每個元素加乙個屬性值 min 用於記錄當前位置下面的元素的最小值 元素的值用key表示 壓棧...

在O 1 時間刪除鍊錶結點

題目 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。鍊錶結點與函式的定義如下 struct listnode void deletenode listnode plisthead,listnode ptobedeleted 刪除結點的操作我們經常碰到,比如乙個鍊錶a b ...

在O 1 時間刪除鍊錶結點

問題描述 給定單向鍊錶的頭指標和乙個結點指標 定義乙個函式在o 1 時間刪除鍊錶結點。鍊錶結點與函式的定義如下 struct listnode void deletenode listnode plisthead listnode ptobedeleted 思路 在單向鍊錶中刪除乙個結點,最常用的做...