我的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解题报告: