leetcode: (191) Number of 1 Bits
2015-08-25 10:34
656 查看
【Question】
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation
so the function should return 3.
题目要求求出2进制中1的个数
方法一:可以通过逐位与1进行与,可以得到总的1个数;
方法一需要比较32次不够优化
方法二:通过比较n&n-1,可以将非1的位省去,如n=10000000000000000000000000, 进行n&n-1只需要一次元算,而方法一要32次
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation
00000000000000000000000000001011,
so the function should return 3.
题目要求求出2进制中1的个数
方法一:可以通过逐位与1进行与,可以得到总的1个数;
class Solution { public: int hammingWeight(unsigned int n) { int i; int count=0; for(int i=0;i<32;i++) { if ((n&1)==1) count++; n>>=1; } return count; } };
方法一需要比较32次不够优化
方法二:通过比较n&n-1,可以将非1的位省去,如n=10000000000000000000000000, 进行n&n-1只需要一次元算,而方法一要32次
class Solution { public: int hammingWeight(unsigned int n) { int count=0; while(n!=0) { n=n&(n-1); count++; } return count; } };
相关文章推荐
- 一个有趣的SQL命题 用一条语句切换BIT型的真假值
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解