剑指Offer | 二进制中 1 的个数
题目描述
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为_汉明重量_)。
https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/
题解
循环检查二进制位
对 32位 int,循环检查二进制的每一位。
1 | class Solution { |
时间复杂度:,该题 k = 32
空间复杂度:
位运算优化
n & (n - 1)
, 其结果为:把 n 最低位的 1 变为 0 的结果。
1 | class Solution { |
时间复杂度:,最坏情况下,n 二进制的每一位均为 1 。
空间复杂度:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 PEACE's Blog!