
题目解出来非常简单, 但是最优解即O1解略烧脑
int hammingDistance(int x, int y)
{
int ret = x ^ y;
ret = (ret & 0x55555555) + ((ret >> 1) & 0x55555555);
ret = (ret & 0x33333333) + ((ret >> 2) & 0x33333333);
ret = (ret & 0x0f0f0f0f) + ((ret >> 4) & 0x0f0f0f0f);
ret = (ret & 0x00ff00ff) + ((ret >> 8) & 0x00ff00ff);
ret = (ret & 0x0000ffff) + ((ret >> 16) & 0x0000ffff);
return ret;
}
该解法使用分支归并的思想, 先将间隔为1的各位数字合并, 随后间隔为2, 间隔为四,,,, 间隔为16时i, 两边的数字刚好能加到重合。
这篇博客探讨了一个巧妙的算法实现,用于计算两个整数之间的汉明距离。通过分支归并思想,该算法避免了复杂的循环,采用位操作技巧达到O(1)的时间复杂度,依次合并间隔为1、2、4、8、16的位,实现了高效的计算过程。
1380

被折叠的 条评论
为什么被折叠?



