算法面试:精选微软等公司经典的算法面试100题 第26-35题
?
??????????????? 算法面試:精選微軟等公司經(jīng)典的算法面試100題 第26-35題
?
?
26.左旋轉(zhuǎn)字符串
題目:
定義字符串的左旋轉(zhuǎn)操作:把字符串前面的若干個(gè)字符移動(dòng)到字符串的尾部。
如把字符串a(chǎn)bcdef左旋轉(zhuǎn)2位得到字符串cdefab。請(qǐng)實(shí)現(xiàn)字符串左旋轉(zhuǎn)的函數(shù)。
要求時(shí)間對(duì)長(zhǎng)度為n的字符串操作的復(fù)雜度為O(n),輔助內(nèi)存為O(1)。
27.跳臺(tái)階問題
題目:一個(gè)臺(tái)階總共有n級(jí),如果一次可以跳1級(jí),也可以跳2級(jí)。
求總共有多少總跳法,并分析算法的時(shí)間復(fù)雜度。
這道題最近經(jīng)常出現(xiàn),包括MicroStrategy等比較重視算法的公司都
曾先后選用過個(gè)這道題作為面試題或者筆試題。
28.整數(shù)的二進(jìn)制表示中1的個(gè)數(shù)
題目:輸入一個(gè)整數(shù),求該整數(shù)的二進(jìn)制表達(dá)中有多少個(gè)1。
例如輸入10,由于其二進(jìn)制表示為1010,有兩個(gè)1,因此輸出2。
分析:
這是一道很基本的考查位運(yùn)算的面試題。
包括微軟在內(nèi)的很多公司都曾采用過這道題。
29.棧的push、pop序列
題目:輸入兩個(gè)整數(shù)序列。其中一個(gè)序列表示棧的push順序,
判斷另一個(gè)序列有沒有可能是對(duì)應(yīng)的pop順序。
為了簡(jiǎn)單起見,我們假設(shè)push序列的任意兩個(gè)整數(shù)都是不相等的。?
比如輸入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一個(gè)pop系列。
因?yàn)榭梢杂腥缦碌膒ush和pop序列:
push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,
這樣得到的pop序列就是4、5、3、2、1。
但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。
30.在從1到n的正數(shù)中1出現(xiàn)的次數(shù)
題目:輸入一個(gè)整數(shù)n,求從1到n這n個(gè)整數(shù)的十進(jìn)制表示中1出現(xiàn)的次數(shù)。
例如輸入12,從1到12這些整數(shù)中包含1 的數(shù)字有1,10,11和12,1一共出現(xiàn)了5次。
分析:這是一道廣為流傳的google面試題。
?
?
?
?
31.華為面試題:
一類似于蜂窩的結(jié)構(gòu)的圖,進(jìn)行搜索最短路徑(要求5分鐘)
32.
有兩個(gè)序列a,b,大小都為n,序列元素的值任意整數(shù),無序;
要求:通過交換a,b中的元素,使[序列a元素的和]與[序列b元素的和]之間的差最小。
例如: ?
var a=[100,99,98,1,2, 3];
var b=[1, 2, 3, 4,5,40];
33.
實(shí)現(xiàn)一個(gè)挺高級(jí)的字符匹配算法:
給一串很長(zhǎng)字符串,要求找到符合要求的字符串,例如目的串:123
1******3***2 ,12*****3這些都要找出來
其實(shí)就是類似一些和諧系統(tǒng)。。。。。
34.
實(shí)現(xiàn)一個(gè)隊(duì)列。
隊(duì)列的應(yīng)用場(chǎng)景為:
一個(gè)生產(chǎn)者線程將int類型的數(shù)入列,一個(gè)消費(fèi)者線程將int類型的數(shù)出列
35.
求一個(gè)矩陣中最大的二維矩陣(元素和最大).如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)寫出算法;(2)分析時(shí)間復(fù)雜度;(3)用C寫出關(guān)鍵代碼
總結(jié)
以上是生活随笔為你收集整理的算法面试:精选微软等公司经典的算法面试100题 第26-35题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 影响你的人
- 下一篇: RHEL 5.4下cyrus-sasl-