我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/power-of-two/description/
题目描述:

知识点:位运算
思路一:每次除2判断其对2取余的值
时间复杂度是O(logn)。空间复杂度是O(1)。
JAVA代码:
public class Solution {
public boolean isPowerOfTwo(int n) {
while(n > 1){
if(n % 2 == 1){
return false;
}
n = n / 2;
}
return n == 1;
}
}
LeetCode解题报告:

思路二:将其转换成二进制计数其中1的个数
JAVA代码:
public class Solution {
public boolean isPowerOfTwo(int n) {
if(n <= 0){
return false;
}
String s = Integer.toBinaryString(n);
int count = 0;
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '1'){
count++;
if(count > 1){
return false;
}
}
}
return count == 1;
}
}
LeetCode解题报告:

思路三:使用Integer的内置函数bitCount()计算二进制数中1的个数
JAVA代码:
public class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && Integer.bitCount(n) == 1;
}
}
LeetCode解题报告:

本文介绍三种方法判断一个数是否为2的幂次方,包括除2判断余数、转换二进制计数1的个数及使用Integer.bitCount()函数。提供JAVA代码实现。
422

被折叠的 条评论
为什么被折叠?



