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 思路 在單向鍊錶中刪除乙個結點,最常用的做...