哈爾濱小米筆試經驗

今年小米的筆試共三道大題,時間90分鐘

哈爾濱小米筆試經驗

第一道 輸入一個整數數組,調整數組中數字的順序,使得所有奇數位於所有偶數的前面,例如輸入的數組為{1,2,4,7,9,8,10,15,14,20},調整後的數組 {1,7,9,15,2,4,8,10,14,20}是一種滿足條件的方案。函數的頭部已經寫好,無返回值,有兩個參數,一個是數組指針,另一個是該數組的長度。

我的解答思路是使用兩個偽指針,一個指向數組的頭部,另一個指向數組的尾部,先從前向後掃描,找到第一個偶數,然後在從後向前掃描找到倒數第一個奇數,交換這兩個元素,循環上述步驟直到兩個指針相遇。

第二道 輸入一個二叉排序樹,將該二叉排序樹轉換為排序的雙向鏈表。要求不能創建任何新的節點,只調整指針的指向。(程序員面試100題的第一道題,輸入樣例一樣),函數頭部已經寫好,無返回值,參數為根節點的指針。

第三道 輸入一個數學表達式,包含+、-、*、/、()運算,設計一個算法計算該表達式的值,+、-不作為正負號出現,函數頭部已經給出,返回表達式的值,參數為字符串指針,給出了兩個函數,一個字符轉換成整數的函數,另一個是整數轉換成字符的函數,可以直接調用。輸入樣例 1+2*(3-4)