给定一个非负整数 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; } }