最近秋招也做了多多少少的面試題,發現除了基礎知識外,演算法還是挺重要的。特意整理了一些常見的演算法題,新增了自己的理解並實現。
除此之外,建議大家還可以刷刷《劍指offer》。此外,左神在牛客網上也有演算法課程,聽了基礎班的感覺還不錯,起碼讓我這個演算法小白也能快速地理解了很多問題,知識付費的時代,這個真的是良心課程了。就我個人而言的話,平時為了解決乙個演算法問題,需要花很多時間去看帖子、看講解,但很難真正轉化為自己的思想(主要問題就是沒有動手練),大家可以根據自己的需求,進行演算法的學習。
1.驗證乙個數是否是素數
2.斐波那契
3.求最大公約數
4.陣列去重
5.刪除重複的字元
6.排序兩個已經排好序的陣列
7.字串反向
8.字串原位反轉
9.判斷是否是回文
10.判斷陣列中是否有兩數之和
11.連字元轉成駝峰
12.加油站問題-貪心演算法
13.用正則實現trim() 清除字串兩端空格
14.島問題:判斷有幾個島
15.將數字12345678轉化成rmb形式:12,345,678
16.刪除相鄰相同的字串
17.宣講會安排
18.漢諾塔問題
19.母牛生母牛問題
1.驗證乙個數是否是素數
如果這個數是 2 或 3,一定是素數;
如果是偶數,一定不是素數;
如果這個數不能被3~它的平方根中的任一數整除,m必定是素數。而且除數可以每次遞增2(排除偶數)
function isprime(num) else ;
for(let i = 0; i < arr.length; i++),,,
,,,,
console.log("最大場次:" + getmostcount(obj));
18.漢諾塔問題
把a桿上的金盤全部移到c桿上,並仍保持原有順序疊好。操作規則:每次只能移動乙個盤子,並且在移動過程中三根桿上都始終保持**在下,小盤在上,操作過程中盤子可以置於a、b、c任一桿上。
思路:遞迴解決:把問題轉化為規模縮小了的同類問題的子問題;
明確遞迴結束的條件(base case):n == 1
function hanoiprocess(n,from,to,help) else else{
count = n;
return count;
let n = 7;
console.log(n + " 年後,牛的數量是: " + cow(n))
// 7 年後,牛的數量是: 13
如果有更好的解法,感謝大佬賜教!我的解法太普通了,有時間再改進下。
演算法問題先寫到這,如果還有更多的面試題,也可以和我交流交流,相互學習呀!
四道微軟面試演算法題
1 乙個整數數列,元素取值可能是0 65535中的任意乙個數,相同數值不會重複出現。0是例外,可以反覆出現。請設計乙個演算法,當你從該數列中隨意選取5個數值,判斷這5個數值是否連續相鄰。注意 5個數值允許是亂序的。比如 8 7 5 0 6 0可以通配任意數值。比如 8 7 5 0 6 中的0可以通配...
四道微軟面試演算法題
朋友去ms面試,我從他口裡探到幾道程式設計面試題。特來和各位分享。1 乙個整數數列,元素取值可能是0 65535中的任意乙個數,相同數值不會重複出現。0是例外,可以反覆出現。請設計乙個演算法,當你從該數列中隨意選取5個數值,判斷這5個數值是否連續相鄰。注意 5個數值允許是亂序的。比如 8 7 5 0...
兩道面試演算法題
最近面試 兩道演算法題 說難不難 要寫全對也不容易 很慚愧 我沒有一次寫對 第一道 無序int陣列 找到中位數 void swap int a,int b int get kth number vector num,int k,int start,int end 一次劃分結束 index i if ...