[LeetCode]231-2的幂

231. 2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例:
输入: 1 -> 输出: true
输入: 218 -> 输出: false

解法1

常规递归的思路, 逐步除2后得出是否是2的幂次.
还可以进行一次奇偶数的判断, 这样减少循环次数.

class Solution:
    def isPowerOfTwo(self, n):
       if n == 1:
            return True
    
        while n > 1:
            n = n/2
        return n==1

解法2

运用与运算, 当 n 是 2 的幂次时, n 与 n-1 的二进制位互补, 因此与预算的结果必然为0.

class Solution:
    def isPowerOfTwo(self, n):
        if n == 0:
            return False
        return n&(n-1) == 0

解法3

直接算出每个2的幂次数然后比较.
当 n 不是 2 的幂次时, 必然循环32次.

class Solution:
    def isPowerOfTwo(self, n):
        for i in range(31):
            if 2**i == n:
                return True
        return False

解法4

采用递归的方式.

class Solution:
    def isPowerOfTwo(self, n):
        if n == 1: return True
        if n%2 == 0 and n >= 2:
            return self.isPowerOfTwo(n/2)
        else:
            return False

相似题:
326. 3的幂
342. 4的幂

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,223评论 0 2
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    AIM外星人阅读 5,013评论 0 1
  • 语法 是一个键值对,用来为父控件存储多余的数据。一个控件可以包含任意数量的 ,这些值都存储在单个Bundle对象中...
    sunnyaxin阅读 22,773评论 1 14
  • 人们都说初恋是最美好的,也是最难忘的。确实如此。想起初恋那个人,从高中懵懵懂懂到大学毕业,再到即将研究生毕业,八九...
    lucky成阅读 2,515评论 0 0

友情链接更多精彩内容