网站域名查询系统,遵义网上办事大厅,最近中文字幕高清字幕mv,网页课程设计位1的个数
编写一个函数#xff0c;输入是一个无符号整数#xff08;以二进制串的形式#xff09;#xff0c;返回其二进制表达式中 设置位 的个数#xff08;也被称为汉明重量#xff09;。
示例 1#xff1a;
输入#xff1a;n 11 输出#xff1a;3 解释#x…位1的个数
编写一个函数输入是一个无符号整数以二进制串的形式返回其二进制表达式中 设置位 的个数也被称为汉明重量。
示例 1
输入n 11 输出3 解释输入的二进制串 1011 中共有 3 个设置位。
示例 2
输入n 128 输出1 解释输入的二进制串 10000000 中共有 1 个设置位。
解题思路
使用位操作通过不断地将最低位的1清除。
位操作原理
n (n - 1); 这个操作实际上是移除了整数 n 的二进制表示中最低位的 1。
例子
假设 n 12其二进制表示为 1100。我们来看 n - 1 和 n (n - 1) 的结果n 12二进制1100n - 1 11二进制1011n (n - 1) 1100 1011 1000结果是 1000即 8。可以看到最低位的 1 已经被移除。
Java实现
public class HammingWeight {public int hammingWeight(int n) {int count 0;while (n ! 0) {n (n - 1); // 清除最低位的1count;}return count;}// 测试用例public static void main(String[] args) {HammingWeight solution new HammingWeight();System.out.println(solution.hammingWeight(11)); // 期望输出: 3 (二进制: 1011)System.out.println(solution.hammingWeight(128)); // 期望输出: 1 (二进制: 10000000)}
}
时间空间复杂度
时间复杂度O(k)其中k是二进制表示中1的个数。空间复杂度O(1)只使用了常数级别的额外空间。