zoukankan      html  css  js  c++  java
  • Leecode刷题之旅-C语言/python-231 2的幂

    /*
     * @lc app=leetcode.cn id=231 lang=c
     *
     * [231] 2的幂
     *
     * https://leetcode-cn.com/problems/power-of-two/description/
     *
     * algorithms
     * Easy (44.38%)
     * Total Accepted:    13.8K
     * Total Submissions: 31.2K
     * Testcase Example:  '1'
     *
     * 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
     * 
     * 示例 1:
     * 
     * 输入: 1
     * 输出: true
     * 解释: 2^0 = 1
     * 
     * 示例 2:
     * 
     * 输入: 16
     * 输出: true
     * 解释: 2^4 = 16
     * 
     * 示例 3:
     * 
     * 输入: 218
     * 输出: false
     * 
     */
    bool isPowerOfTwo(int n) {
        if(n<=0 || n>2147483647)//2的幂最小是1  int最大为2147483647           
         return false;        
         while(n>1){            
             if(n%2!=0) return false;           
              n /=2;        
            }        
        return true;
    }

    如果除2有余数的话那肯定就不是了。

    还看到大佬写的一句话:

     return log(n)/log(2)==(int)(log(n)/log(2));

    但是这个 到了2的三十次方 就不对了 就差这一个 不知道为什么。

    #
    # @lc app=leetcode.cn id=231 lang=python3
    #
    # [231] 2的幂
    #
    # https://leetcode-cn.com/problems/power-of-two/description/
    #
    # algorithms
    # Easy (44.38%)
    # Total Accepted:    13.8K
    # Total Submissions: 31.2K
    # Testcase Example:  '1'
    #
    # 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
    # 
    # 示例 1:
    # 
    # 输入: 1
    # 输出: true
    # 解释: 2^0 = 1
    # 
    # 示例 2:
    # 
    # 输入: 16
    # 输出: true
    # 解释: 2^4 = 16
    # 
    # 示例 3:
    # 
    # 输入: 218
    # 输出: false
    # 
    #
    class Solution:
        def isPowerOfTwo(self, n: int) -> bool:
             return (n>0) and (n & (n-1))==0

    这里 &进行与 运算,如果是2的幂的话,比如4, 4是 0100 3是0011   2是 0010   与运算结果为0 才是2的幂 不为0则不是

  • 相关阅读:
    常用centos命令,经常忘记
    大数据hadoop之最简单理解
    企业级私有镜像仓库Harbor
    docker 修改国内源
    docker镜像仓库
    Dockerfile
    通过docker搭建LNMP平台(以wordpress为例)
    蓝鲸问题库
    docker常用命令
    LVS+Keepalive双机热备 <转>
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10557399.html
Copyright © 2011-2022 走看看