Leetcode 231
来源:互联网 发布:gnome和x windows 编辑:程序博客网 时间:2024/05/22 06:28
题意
判断一个数n是否是2的幂次。
思路
算法1
时间复杂度
直接检查n能否一直除以2直到1。
算法2
时间复杂度
非常trick的一个思路,我们知道n如果是2的幂次,那么n的2进制表示中一定是1后面跟若干个0,即只有一个1。
我们利用·n & (n - 1)
的性质:将最低一位1置0,即此时n & (n - 1) = 0
代码
algorithm 1
class Solution {public: bool isPowerOfTwo(int n) { if (n <= 0) return false; while (n % 2 == 0) n >>= 1; return n == 1; }};
algorithm 2
class Solution {public: bool isPowerOfTwo(int n) { return n <= 0 ? false : !(n & (n - 1)); }};
0 0
- leetcode 231
- Leetcode 231
- leetcode 231
- Leetcode no. 231
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- lr理论
- Repeated Substring Pattern
- 日期类
- String类里的compareTo()方法~
- android 监听Button点击的事件的方式
- Leetcode 231
- linux上搭建gitlab服务器
- 机器学习——正则化 (L1与L2范数)
- (转)centos liveCD liveDVD netinstall minimal DVD1 DVD2 版本区别
- 算法提高 9-3摩尔斯电码
- (15.1.22)Guitar-Music Theory
- hadoop(2.7.1)配置过程问题
- 浅谈 MVP in Android
- HSV颜色与RGB颜色对象的互转