LeetCode-191-位1的个-&- 231-2的幂
5月 30, 2019
769
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
Solution1:
1 | class Solution { |
思路:
将每一位移到最后一位检查是否为1,到0为止,最后返回个数。
由于是无符号整型,每次都会执行32次,所以时间复杂度是O(1)。
Solution2(优化):
1 | class Solution { |
看了官方题解,这种方法是每一次将最后一个1给消除。这样顶多执行k次,k就为1的个数。这样就又优化了一点点计算。
eg:
11010 & 11001 = 11000
11000 & 10111 = 10000
10000 & 01111 = 0
231. 2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
有了上面的思路:
这道题就可以写成这样:
1 | class Solution { |
2的n次方在二进制中就是只有1个位置是1,其他全是0(对于正数)。