列表

详情


NC365. 2的幂

描述

给定一个非负整数 n ,请问是否存在一个 x 满足 ,如果有,则返回 true ,否则返回 false

数据范围:

示例1

输入:

4

输出:

true

说明:

2^2 = 4\

示例2

输入:

6

输出:

false

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 308KB, 提交时间: 2022-04-21

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return bool布尔型
     */
    bool poweroftwo(int n) {
        // write code here
        // 法2:位运算,利用数字的性质,若是2的幂次,那么n和n - 1没有一个位相同
        int num = n & (n - 1);
        return n > 0 && num == 0;
        // 法1:位运算,检查n二进制中是否只有一个1
//         if (!n) return false;
//         int cnt = 0;
//         while(n) {
//             cnt += (n & 1);
//             if (cnt > 1) return false;
//             n >>= 1;
//         }
//         return true;
    }
};

C 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-04-07

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @return bool布尔型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
bool poweroftwo(int n ) {
    // write code here
    if(n <= 0)return false;
    while(n > 0){
        if(n&1)break;
        n=n>>1;
    }
    if(n>1)return false;
    else return true;
}

C++ 解法, 执行用时: 3ms, 内存消耗: 400KB, 提交时间: 2022-05-15

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return bool布尔型
     */
    bool poweroftwo(int n) {
        // write code here
        return n>0&&(n&(n-1))==0;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 404KB, 提交时间: 2022-07-26

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return bool布尔型
     */
    bool poweroftwo(int n) {
        // write code here
        int cnt = 0;
        while (n != 0) {
            n = n & (n - 1);
            cnt++;
        }
        if (cnt == 1) {
            return true;
        }
        return false;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 404KB, 提交时间: 2022-07-04

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return bool布尔型
     */
    bool poweroftwo(int n) {
        // write code here
      if (n == 0) return false;
      for (int k = 1; k <= n ; k *= 2)
      {
        if (k == n) return true;
      }
      return false;
    }
};

上一题