【LeetCode231算法/编程练习C++】--判断是否是2的整数次幂 //按位与&的用处
来源:互联网 发布:支持php的web服务器 编辑:程序博客网 时间:2024/05/01 17:27
231. Power of Two
Given an integer, write a function to determine if it is a power of two.
LeetCode第231题:判断一个数字n是不是2的整数幂:
第一种解法:
//简单无脑while(n)除以2,时间复杂度O(logn)
bool isPowerOfTwo(int n) {while (n) {if (n % 2 == 0)n = n / 2;else {if (n == 1)return true;else return false;}}return false;}
更为简洁的写法:
bool isPowerOfTwo(int n) {if (n == 0) return false;while (n % 2 == 0) n /= 2;return (n == 1);}
第二种解法:迭代
bool isPowerOfTwo(int n) {return n>0 && (n == 1 || (n % 2 == 0 && isPowerOfTwo(n / 2)));}
举个栗子:
- n = 2 ^ 0 = 1 = 0b0000...00000001, and (n - 1) = 0 = 0b0000...0000.
- n = 2 ^ 1 = 2 = 0b0000...00000010, and (n - 1) = 1 = 0b0000...0001.
- n = 2 ^ 2 = 4 = 0b0000...00000100, and (n - 1) = 3 = 0b0000...0011.
- n = 2 ^ 3 = 8 = 0b0000...00001000, and (n - 1) = 7 = 0b0000...0111.
bool isPowerOfTwo(int n) {return n>0 && ((n & (n - 1)) == 0);}
第四种解法:
看到的时候眼前一两,非常装逼……时间复杂度是O(1)
毕竟int的大小是有限制的……从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)
bool isPowerOfTwo(int n) {return n>0 && (1073741824 % n == 0);}
//顺手祝自己阴历生日快乐,晚上吃面~
0 0
- 【LeetCode231算法/编程练习C++】--判断是否是2的整数次幂 //按位与&的用处
- LeetCode231 判断是否为2的幂
- 判断一个整数是否是2的整数次幂
- leetcode231-Power of Two(判断一个整数n是否为2的方幂)
- 判断一个数是否是2的整数次幂
- 判断一个整数是否是2的n次幂
- 判断一个数是否是2的整数次幂
- 判断一个数是否是2的整数次幂
- 判断一个数是否是2的整数次幂
- 判断一个整数是否是2的N次幂及一个数是否是偶数
- 如何判断一个整数是否是2的整数次幂
- 判断一个整数是否为2的整数次幂
- java 判断一个数是否是2的整数次幂
- 判断一个数是否是2的整数次幂,python实现。
- 判断一个整数是否为2的n次幂(算法)
- 判断一个数是否为2的整数次幂
- 判断一个数是否为2的整数次幂
- 判断一个整数是否为2的n次幂
- 七月算法《python爬虫》第一课:Python爬虫小示例
- kettle6.0linux安装配置
- 面向对象的三的特性:封装 继承 多态
- Java内存模型FAQ
- ionic
- 【LeetCode231算法/编程练习C++】--判断是否是2的整数次幂 //按位与&的用处
- MyWebSQL - Draft
- 417. Pacific Atlantic Water Flow
- LaunchScreen.storyboard: The document “(null)” requires Xcode 8.0 or later
- 关于List,ArrayList中remove(object obj)方法不能删除对象问题
- 魔术索引II
- arcpy实现重排地块号
- 服务器请求微信后台(api.weixin.qq.com)过慢处理
- 质量控制之室内质控(IQC)和室间质评(EQA)