zoukankan      html  css  js  c++  java
  • LeetCode--342--4的幂

    问题描述:

    给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

    示例 1:

    输入: 16
    输出: true
    

    示例 2:

    输入: 5
    输出: false

    进阶:
    你能不使用循环或者递归来完成本题吗?

    方法1:同3的幂循环遍历

     1 class Solution:
     2     def isPowerOfFour(self, num):
     3         """
     4         :type num: int
     5         :rtype: bool
     6         """
     7         if num > 0 :
     8             if num == 1:
     9                 return True
    10             else:
    11                 k = 0
    12                 while k == 0:
    13                     num = num / 4.0
    14                     k = num % 4
    15                 
    16                 if num == 1:
    17                     return True
    18                 else:
    19                     return False
    20         else:
    21             return False

    方法2:同3的次幂

    1 import math
    2 class Solution:
    3     def isPowerOfFour(self, num):
    4         """
    5         :type num: int
    6         :rtype: bool
    7         """
    8         return num > 0 and 4**round(math.log(num,4)) == num

    方法3: 用4的倍数-1与num做与运算。15 =  1111                      15 =  1111

                                                                  16 = 10000                     10 = 1010

                                                                           00000                            1010  

     1 class Solution:
     2     def isPowerOfFour(self, num):
     3         """
     4         :type num: int
     5         :rtype: bool
     6         """
     7         if num <= 0:
     8             return False
     9         else:
    10             for i in range(0, 16):
    11                 if num <= 4**i:
    12                     tmp = num & (4**i -1)
    13                     if tmp == 0:
    14                         return True
    15                     else:
    16                         return False
    17                 else:
    18                     pass
    19             return False

    2018-09-25 21:28:04

  • 相关阅读:
    8*8LED点阵
    红外收发基础
    MQTT服务器(Win)
    安卓图片显示与网络访问
    Liunx C 编程之多线程与Socket
    JAVA开始(基础篇)
    C语言数据类型及变量整理
    EOS基础全家桶(十五)智能合约进阶2
    EOS基础全家桶(十四)智能合约进阶
    EOS基础全家桶(十三)智能合约基础
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/9703663.html
Copyright © 2011-2022 走看看