專欄 | 九章演算法
網址 | www.jiuzhang.com
題目描述
兩個整數之間的漢明距離是指,相應二進位制位不同的位置的數目。
給你兩個整數x和y,計算他們之間的漢明距離。
其中,0 ≤ x, y < 2^31.
樣例
輸入:
x = 1, y = 4
輸出:
2
樣例解釋
x = 1 ==> 0 0 0 1
y = 4 ==> 0 1 0 0
—————-↑—-↑
兩個數位的二進位制不同,所以答案為2.
解題思路
a.題目沒有要求空間複雜度,我們可以開兩個大小為31的陣列,將每個數都轉換成二進位制的形式,然後進行逐位比較並計算答案。
b.如果仔細思考可以發現,逐位比較兩個數其實不需要開陣列存放他們的二進位制的形式,在一個迴圈內對兩個數同時逐位比較即可,時間複雜度為O( log( max( x, y) ) )。下面給出這種解法的參考程式。
c.如果讀者瞭解位運算的知識,而且面試官要求優化程式碼執行速度,那麼參考程式碼中的模運算和除法運算均可以用位運算替代。
d.如果讀者知道按位異或的性質(相同為0,不同為1),那麼就可以想到如果將x和y進行異或操作,那麼我們最後只需利用位運算統計異或結果中 “1” 的個數即可。
參考程式
面試官角度分析
這是一道簡單難度的題,主要考察進位制轉換和語法的能力。這道題如果可以不開陣列計算出結果或者利用異或的性質計算出結果,那麼可以有hire的水平。如果運用位運算優化了程式碼,那麼還可以有strong hire的評價。
題目答案連結
相關題目
www.lintcode.com/zh-cn/probl…
www.lintcode.com/zh-cn/probl…
推薦閱讀
- 12 個 tips 教你搞定 onsite!
- 25 個 questions, 教你向面試官提問!
- 10 個 tips 教你搞定電面!
- 北美IT企業fulltime薪資大曝光
- IT 簡歷模板大放送 | 《如何寫好技術簡歷》講座精華總結
- 面試遇到做過的題怎麼辦?
- 冷凍期大揭祕 | Google、FB、Amazon、Linkedin冷凍期
- 面試前如何瞭解一家IT企業?試試官方技術部落格!
- Google晉升機制 | 大公司如何升級打怪, 獲得晉升?
歡迎關注我的微信公眾號:九章演算法(ninechapter)。
精英程式設計師交流社群,定期釋出面試題、面試技巧、求職資訊等