ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

力扣191. 位1的个数(位运算)

力扣191. 位1的个数(位运算)

Problem: 191. 位1的个数

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

题目规定数值的范围不会超过32位整形数

1.定义统计个数的变量oneCount;由于每次与给定数字求与的变量mask初始化为1
2.for循环从0~32,每一次拿mask与给定数字求与运算,若不为0则表示当前二进制位为1,oneCount++;
3.给定数字右移一位

复杂度

时间复杂度:

O ( 1 ) O(1) O(1)

空间复杂度:

O ( 1 ) O(1) O(1)

Code

class Solution {
public:/*** Bit operation* @param n Unsigned integer to be operated* @return int*/int hammingWeight(uint32_t n) {int oneCount = 0;int mask = 1;for (int i = 0; i < 32; ++i) {if ((n & mask) != 0) {oneCount++;}mask <<= 1;}return oneCount;}
};
返回列表