1、列印漢諾塔移動步驟,並且計算複雜度。
方法是遞迴,將n-1層移到中間柱,然後將最底層移到目標柱,然後再把n-1層移到目標柱。
f(n) = 2f(n-1) + 1 , f(1) = 1
f(n) + 1 = 2( f(n-1) + 1 )
f(n) = 2^n - 1
t(n) = o(2^n);
2、計算兩個字串的是否相似(字元的種類,和出現次數相同)
先比較strlen,如果不相等,直接返回false
根據ascii碼建表 str[255],然後比較字元的出現次數,如有乙個不同,返回false。
然後比較位置吧。有乙個不同,就返回true。
3、定義二叉樹,節點值為int,計算二叉樹中的值在[a,b]區間的節點的個數。
任意一種方式遍歷二叉樹,如果值在 [a,b] 之間,計數器+1
4、一條路有k可坑,每次能跳平方數步長(1 4 9 16。。),不能跳到坑里,從a跳到b最少幾步?(
動態規劃題
)動態轉移方程
f(n) = min( f(大於n的第乙個平方數 -n) ,f(n- 小於n的第乙個完全平方數) +1 )
【 補充 ing
在乙個座標軸上, 給定兩個點,乙個起點,乙個終點,起點有乙個方塊,方塊可以左右移動,但是移動的長度只能是平方數長(1,4,9,16 ••••) ,同時座標軸上還有洞,移動的過程中不能越過這個洞,不然會掉下去,問 由起點到終點 至少需要多少次移動,不能到達返回-1】
5、給乙個整數陣列,求陣列中重複出現次數大於陣列總個數一半的數。
[cpp]view plain
copy
intmorethanhalfnum(
int*a ,
intn )
else
if(a[i] != num)
--times;
else
++times;
} k = 0;
for(i = 0 ; i < n ; ++i)
if(k*2 <= n)
return
-1;
//沒有找到
else
return
num;
//找到
}
6、乙個128bits 的二進位製流,要求找出 裡面包含 某8bits 二進位製流的數目。
如果只是乙個128bit的流,那就用int對其某個位元組,然後移位比較,然後int向後移動3個位元組,繼續移位比較。如果是很多128bit的流,可以模仿kmp,用上面的方法,每次取int的8bit和目標8bit進行and操作,結果只有256種可能,事先存乙個256的表,查表決定向後跳躍的bit數。
7、交換整型的奇數字和偶數字
[cpp]view plain
copy
intswapoddevenbit(
intx)
intmain(
void
)
8、試著用最小的比較次數去尋找陣列中的最大值和最小值。
解法一:
掃瞄一次陣列找出最大值;再掃瞄一次陣列找出最小值。
比較次數2n-2
解法二:
將陣列中相鄰的兩個數分在一組, 每次比較兩個相鄰的數,將較大值交換至這兩個數的左邊,較小值放於右邊。
對大者組掃瞄一次找出最大值,對小者組掃瞄一次找出最小值。
比較1.5n-2次,但需要改變陣列結構
解法三:
每次比較相鄰兩個數,較大者與max比較,較小者與min比較,找出最大值和最小值。
方法如下:先將一對元素互相進行比較,然後把最小值跟當前最小值進行比較,把最大值跟當前最大值進行比較。因此每兩個元素需要3次比較。如果n為奇數,那麼比較的次數是3*(n/2)次比較。如果n為偶數,那麼比較的次數是3n/2-2次比較。因此,不管是n是奇數還是偶數,比較的次數至多是3*(n/2),具體的**如下:
[cpp]view plain
copy
void
getmaxandmin(
int*arr ,
intn ,
int&max ,
int&min)
else
else
i += 2;
} for
( ; i < n ; i += 2)
else
} }
2012 人民搜尋 實習生招聘 筆試題
1 列印漢諾塔移動步驟,並且計算複雜度。方法是遞迴,將n 1層移到中間柱,然後將最底層移到目標柱,然後再把n 1層移到目標柱。f n 2f n 1 1 f 1 1 f n 1 2 f n 1 1 f n 2 n 1 t n o 2 n 2 計算兩個字串的是否相似 字元的種類,和出現次數相同 先比較s...
2012 人民搜尋 實習生招聘 筆試題
1 列印漢諾塔移動步驟,並且計算複雜度。方法是遞迴,將n 1層移到中間柱,然後將最底層移到目標柱,然後再把n 1層移到目標柱。f n 2f n 1 1 f 1 1 f n 1 2 f n 1 1 f n 2 n 1 t n o 2 n 2 計算兩個字串的是否相似 字元的種類,和出現次數相同 3 定義...
2012 人民搜尋 實習生招聘 筆試題
1 列印漢諾塔移動步驟,並且計算複雜度。方法是遞迴,將n 1層移到中間柱,然後將最底層移到目標柱,然後再把n 1層移到目標柱。f n 2f n 1 1 f 1 1 f n 1 2 f n 1 1 f n 2 n 1 t n o 2 n 2 計算兩個字串的是否相似 字元的種類,和出現次數相同 先比較s...