专栏名称: 九章算法
专业的北美IT求职经验分享、技术交流社区,帮助你找到好的IT工作。由硅谷顶尖IT企业工程师维护。提供专业的算法培训/面试咨询,官网 www.jiuzhang.com
目录
相关文章推荐
算法爱好者  ·  OpenAI 急了!深夜血战 ... ·  19 小时前  
九章算法  ·  一份百试不爽的《学霸记忆LeetCode刷题 ... ·  2 天前  
九章算法  ·  九章给大家送「春节消费券」了! ·  5 天前  
九章算法  ·  跳槽至少要涨多少钱? ·  3 天前  
算法爱好者  ·  史上首次,DeepSeek登顶中美AppSt ... ·  5 天前  
51好读  ›  专栏  ›  九章算法

Google 面试题 | 哈明顿距离公告通知

九章算法  · 公众号  · 算法  · 2017-05-26 08:29

正文

作者 | 刘助教 & ben 助教

编辑 | Afra Tao

专栏 | 九章算法


题目描述

两个整数之间的汉明距离是指,相应二进制位不同的位置的数目。
给你两个整数x和y,计算他们之间的汉明距离。
其中,0 ≤
x, y


样例

输入:
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的评价。


题目答案链接


http://www.jiuzhang.com/solution/hamming-distance/

 

相关题目


http://www.lintcode.com/zh-cn/problem/count-1-in-binary/

http://www.lintcode.com/zh-cn/problem/swap-bits/


  九章求职小助手 app小程序上线    









 面试题     系统设计     薪资谈判     

面试指导   内推信息    冷冻期       

 面试经验    技术干货 

一指禅 戳戳戳!

 把硅谷IT公司大牛的面试指导放进口袋里!