网站关键词优化哪家正规,淄博百姓网,什么网站可以做兼职设计,减肥单页网站位运算|比特位计数、汉明距离
338 比特位计数 /**
比特位计数法一#xff1a;Brian Kernighan 算法的原理是#xff1a;对于任意整数 x#xff0c;令 xx (x−1)#xff0c;该运算将 x 的二进制表示的最后一个 1 变成 0。因此#xff0c;对 x 重复该操作#xff0…位运算|比特位计数、汉明距离
338 比特位计数 /**
比特位计数法一Brian Kernighan 算法的原理是对于任意整数 x令 xx (x−1)该运算将 x 的二进制表示的最后一个 1 变成 0。因此对 x 重复该操作直到 x 变成 0则操作次数即为 x 的「一比特数」。法二bits[x]bits[x-y]1y为2的整数次幂y(y-1)0 */ /*** 比特位计数* 法一Brian Kernighan 算法的原理是对于任意整数 x令 xx (x−1)* 该运算将 x 的二进制表示的最后一个 1 变成 0。* 因此对 x 重复该操作直到 x 变成 0则操作次数即为 x 的「一比特数」。** 法二bits[x]bits[x-y]1y为2的整数次幂y(y-1)0*/
public class $338 {//动态规划-最高有效位public int[] countBits2(int n) {int[] bits new int[n1];int highBit 0;for (int i 1; i n; i) {if ((i (i-1)) 0) {highBit i;}bits[i] bits[i-highBit] 1;}return bits;}
}
/*** 比特位计数* 法一Brian Kernighan 算法的原理是对于任意整数 x令 xx (x−1)* 该运算将 x 的二进制表示的最后一个 1 变成 0。* 因此对 x 重复该操作直到 x 变成 0则操作次数即为 x 的「一比特数」。** 法二bits[x]bits[x-y]1y为2的整数次幂y(y-1)0*/
public class $338 {//动态规划-最高有效位public int[] countBits2(int n) {int[] bits new int[n1];int highBit 0;for (int i 1; i n; i) {if ((i (i-1)) 0) {highBit i;}bits[i] bits[i-highBit] 1;}return bits;}
}
461 汉明距离 /*** 汉明距离* sx^y* 求s的比特位中1的数量* 法一内置函数* 法二zz-1* 法三不断地检查 s 的最低位如果最低位为 1那么令计数器加一* 然后我们令 s 整体右移一位这样 s的最低位将被舍去原本的次低位就变成了新的最低位。* 我们重复这个过程直到 s0 为止。这样计数器中就累计了 s的二进制表示中 1 的数量。*/
public class $461 {public int hammingDistance(int x, int y) {int z x ^ y;return Integer.bitCount(z);// int cnt 0;
// while (z ! 0) {
// z z (z-1);
// cnt;
// }
// return cnt;// int cnt 0;
// while (z ! 0) {
// cnt z 1;
// z 1;
// }
// return cnt;}
}