逐位比较,m和n分别和1进行“与”操作,
如果相等说明m和n的最后一位相等;否则最后一位不相等并使计数加1
再对m,n都右移一位
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param m int整型 * @param n int整型 * @return int整型 */ int countBitDiff(int m, int n) { int ans = 0; while (m != 0 || n != 0) { if ((m & 1) != (n & 1)) { ans++; } m = m >> 1; n = n >> 1; } return ans; } };
时间复杂度:O(max(m,n)),取决于m和n的位数
空间复杂度:O(1),没有使用额外的空间