問題描述:
有乙個六公升的水桶,乙個五公升的水桶,足夠的水,得到乙個三公升的水?用兩種方案實現。
first: 倒5次
六公升桶裝滿,倒入五公升桶中,然後五公升桶清空,將六公升桶中剩下一公升水倒入五公升桶,將六公升桶裝滿,倒入五公升桶中,那麼六公升桶中剩下兩公升水,五公升桶清空,將六公升桶中的兩公升水倒入五公升桶,六公升桶裝滿,倒入五公升桶中,那麼六公升桶中還剩下3公升水,ok。
second: 倒3次
五公升桶裝滿,倒入六公升桶,五公升桶裝滿,倒入六公升桶,那麼五公升桶剩下四公升水。六公升桶清空,將五公升桶中的四公升水倒入六公升桶,將五公升桶裝滿,將六公升桶裝滿,那麼五公升桶中就只剩下3公升水,ok。
演算法題:設計乙個棧,完成壓棧、出棧、取棧中最小值 o(1)時間複雜度
cracking the coding interview 3.2 題
取最小值思路:每次壓棧時都存放從棧底到當前位置的最小值,即和前乙個最小值比較,如果比前乙個最小值小,當前壓入的值是最小值,否則把以前的最小值當做當前的最小值,dp的思想.min[curr] = min(a[curr],min[curr-1] )
#include using namespace std;
#include #include #include class stack
~stack()
void push(int x)
void pop()
int top()
bool empty()
private:
int *buf;
int curr;
};class stackminelse
}void pop()
int minx()
int top()
private:
stack s1,s2;
};int main()
~stack()
void push(int val)
void pop()
int top()
bool empty()
private:
int *buf;
int cur;
};class stackwithmin1
~stackwithmin1()
void push(int val)
void pop()
int top()
bool empty()
int min()
private:
stack s1, s2;
};int main(){
//cout<
面試教訓:由於長時間沒寫**,向面試官說自己比較擅長資料結構,結果乙個上面的演算法題寫的不好就掛了,sigh。。。其實面試挺基礎的。。。呵呵
備戰阿里面試
成功通過阿里網上筆試,14號就要出發去廣州面試了 這不到半個月的時間要好好閉關修煉,鞏固基礎,準備面試 分析了幾篇 面經 得出一些小結論,僅供參考 1.考的東西大多數很基礎 2.和阿里的業務有關係 因為我看到很多關於搜尋,儲存方面的面試題,所以猜想面試應該是和阿里的業務是有關係的 3.多講自己的長處...
阿里面試複習
2.getclass方法 3.tostring方法 4.finalize方法 5.equals方法 6.hashcode方法 7.wait方法 8.notify方法 9.notifyall方法 作用域當前類 同一package 子孫類其他package public protected privat...
阿里面試 一
還在上課,突然接到阿里的 慌的一匹,做個總結,如果後面沒有阿里面試 二 寫出來,那就說明我涼了哈哈.開始叫你做個自我介紹 1.springboot和spring的區別 我回答的簡化配置,內嵌tomcat 2.資料的隔離級別 讀未提交 read uncommitted 讀提交 read committ...