给定一个正整数 n ,请问是否存在一个 x 满足
,如果有,则返回 true ,否则返回 false。
数据范围:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
public boolean poweroftwo (int n) {
// write code here
int num=1;
while(num<=n){
if(num==n){
return true;
}else{
num=num<<1;
}
}
return false;
}
} import java.util.*;
public class Solution {
public boolean poweroftwo (int n) {
return n == 1
|| n == 2
|| n == 4
|| n == 8
|| n == 16
|| n == 32
|| n == 64
|| n == 256
|| n == 512
|| n == 1024 // 2 ^ 10
|| n == 2048
|| n == 4096
|| n == 8192
|| n == 16384
|| n == 32768
|| n == 65536
|| n == 131072
|| n == 262144
|| n == 524288
|| n == 1048576 // 2 ^ 20
|| n == 2097152
|| n == 4194304
|| n == 8388608
|| n == 16777216
|| n == 33554432
|| n == 67108864
|| n == 134217728
|| n == 268435456
|| n == 536870912
|| n == 1073741824; // 2 ^ 30
}
} 说明了幂函数确实上升很快,我的只写了30行代码就完成了这个问题:)import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
public boolean poweroftwo (int n) {
// write code here
if (n == 0){
return false;
}
while(n > 1){
if((n&1) == 1){
return false;
}
n = n >>> 1;
}
return true;
}
} public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
public boolean poweroftwo(int n) {
// write code here
double v = Math.log10(n) / Math.log10(2);
int vInt = (int) v;
if (vInt == v) {
return true;
}
return false;
}
}