Leetcode——数论(1)
来源:互联网 发布:suse linux 10 下载 编辑:程序博客网 时间:2024/05/22 10:59
1、power of two
判断是否是2的次方数?
我们来观察下2的次方数的二进制写法的特点:
1 2 4 8 16 ....
1 10 100 1000 10000 ....
那么我们很容易看出来2的次方数都只有一个1,剩下的都是0,
思想1:只要每次判断最低位是否为1,然后向右移位,最后统计1的个数即可判断是否是2的次方数
思想2:二进数必然是最高位为1,其它都为0,那么如果此时我们减1的话,则最高位会降一位,其余为0的位现在都为变为1,那么我们把两数相与,就会得到0。
技巧:Bit Operation(位操作)
代码如下:
方法1:
class Solution {public: bool isPowerOfTwo(int n) { int cnt = 0; while (n > 0) { cnt += (n & 1); n >>= 1; } return cnt == 1; } };方法2:
class Solution {public: bool isPowerOfTwo(int n) { return (n > 0) && (!(n & (n - 1))); } };
0 0
- Leetcode——数论(1)
- [LeetCode][数论]Number of 1 Bits
- 数论(二)——数论函数
- hdu4336——数论
- 数论——GCD
- 数列——数论
- 中位数——数论
- 数论——整除
- 数论——素数
- 算法总结—数论
- [Leetcode][数论]Add Digits
- [LeetCode][数论]Move Zeroes
- [LeetCode][数论]Contains Duplicate
- [LeetCode][数论]Majority Element
- [LeetCode][数论]Ugly Number
- [LeetCode][数论]Happy Number
- [数论]数论的基础知识——最大公约数、最小公倍数
- 数论——模运算
- 构造NLP标注集的几个简便方法&随想
- 计算机程序的思维逻辑 (9)
- python 列表与元组
- POJ NOI MATH-7650 不定方程求解(Bailian4139)
- hadoop测试
- Leetcode——数论(1)
- shiro会话监听器
- 选猴王-循环链表
- android 应用组件[通用 Intent---创建闹铃] 二
- 4785: [Zjoi2017]树状数组
- 蓝桥杯Problem A: 猜年龄
- scoed_ptr------防拷贝
- 直方图均衡化原理
- MFC程序打包发布