今晚的筆試題目不難,所考演算法也不是很難,關鍵在仔細審題和平常的積累……
1. 有770個節點的完全二叉樹,問葉子節點有多少?(重點是葉子節點,不是最下一層的節點數目,陷阱呀)
可以計算得出該完全二叉樹的最下面一層的節點數目是259,上一層的節點數目為256,所以,可以得出上一層的葉子節點數目有126,所以結果為385
2. 已知陣列a[100][65]是以行序排列,現已知其起始位址為10000,每個元素佔兩個位元組,求a[56][22]的起始位址?(行序為陷阱)
其實這裡不說行序反而沒有問題,10000+(56×65 + 22 )× 2 = 17324
3. 一無序陣列a,有n個元素,現問將其構造成最大堆的時間複雜度是多少(o(n))
4. (he) ^ 2 = she , 問s、h、e的值分別是什麼?其實這題很容易就能想到25,25^2 = 625, 所以s的值為6, h為2, e為5
5. 有乙個陣列,陣列裡面有n多整數,現要求實現乙個程式將陣列中的每乙個數的數值變為不包括該數的其他數的乘積。假設不會溢位,要求演算法的時間複雜度和空間複雜度越低越好!
void cal(int * input, int n)
6. 有一陣列,陣列裡面有n個整數,現已知陣列中有三個數只有乙個,其他的數都有兩個,實現乙個程式輸出3個數中的任意乙個,要求演算法時間複雜度和空間複雜度越低越好?(乙個比較差的實現,好的沒想出來)
(室友想出來的思路:採用類似於快速排序的方法,在陣列中任選一元素v作為支點,將大於v的元祖放在該元素的右邊,小於該元素的元祖放在該元素的左邊;如果左右兩邊的元素數目都為偶數,則表明該支點元素v就是3個唯一元素中的乙個;若一邊為奇數個,一邊為偶數個,則選取奇數個那邊遞迴使用上述演算法即可,該演算法的時間複雜度o(nlogn))
void fun(int * a, int n)
}if(second == false)
{cout<
6.典型的並查集問題(可惜當時沒想出來具體的實現)
金山的筆試題
乙個金山的筆試題 有乙個日誌檔案,每行記錄了一次呼叫資訊,其中包括時間和 ip。每天的記錄數目大約 10億條左右。現在需要 1 獲取日訪問次數最高的 1000 個 ip 按照訪問量從高到低排序。2 獲取連續一周內訪問次數最高的 1000 個 ip 按照訪問量從高到低排序。請給出能得到精確 非近似 結...
金山筆試題(武漢)
4個題 第一題交換兩個變數的值 不能使用臨時變數 第二題,逆序乙個單鏈表 第三題,c 的構造和析構。第四題,三選一 1,字符集的問題 2,com元件的問題 3,跨平台程式設計的問題。解答 第一題 一下還是沒想到,跟乙個同學討論了一下,後面都沒想到。就網上搜了一下。有兩種方法i,不過有一種不是很保險的...
金山WPS筆試 壓縮字串
通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2.壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...