寫在前面:本人是想要從事程式設計方面的非科班學生,課餘時間學習一些演算法,參加一些面試,記錄了一些常見或者認為比較經典的演算法,供新手參考學習。有不足之處還望指正。(會持續更新)(本文章使用c++語言實現)
1.反轉鍊錶:// time: o(n), space: o(1)
listnode reverselist(listnode head)
return pre;
}}
2.單身數字: // time: o(n), space: o(1)
int singlenumber(int nums)
簡要說明:遍歷陣列元素,輸出結果初始化為0並與陣列中所有元素進行按位異或運算,利用相同元素按位異或運算為0的原理,找出單個數的元素(也可以是奇數個的元素)。
3.不用+/-符號完成加法運算:// time: o(m), space: o(1)
int getsum(int a, int b)
return a;
}
簡要說明:把相加操作分為兩部分:對位相加和進製相加,兩部分加法再採用相同的「加法」迭代計算,直至一方為0為止。 常見面試演算法題整理
下面列的所有的演算法題目基本都能在本部落格中找到 在使用本博文的過程中,可以按照天來複習,每天乙個list,完成這些 基本能應付國內網際網路公司的演算法問題。第一天 1.給定乙個鍊錶 在鍊錶的尾部插入乙個元素 2.用兩個佇列實現乙個棧 3.用兩個棧實現乙個佇列 4.求兩個有序陣列的中位數,可以延伸為...
面試演算法題
前幾天,一好友去筆試,有一題 現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量 1 1000 的蘋果,都能一次給出?當時,我們都想,出題這人。今天,在想移位的時候,突然想到了,這絕對是二進位制數的變種。分析 1000個蘋果,最接近1024,轉化為2進製...
面試演算法題
1 直方圖矩形最大值 class solution s.push i return res 2 第n個醜數 class solution return res.back 3 lru cache 最近最少使用頁面置換快取器 class lrucache int get int key void set...