美文网首页LeetCode刷题
[LeetCode]231-2的幂

[LeetCode]231-2的幂

作者: 杏仁小核桃 | 来源:发表于2018-11-02 16:15 被阅读1次

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的幂

相关文章

  • [LeetCode]231-2的幂

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

  • 231-2的幂

    给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 这道题很巧妙,如果一个数字是 2 的幂次方的话,那么它的...

  • 一起学算法-231. 2 的幂

    一、题目 LeetCode-231. 2 的幂链接:https://leetcode-cn.com/problem...

  • LeetCode 231-240

    231. 2的幂[https://leetcode-cn.com/problems/power-of-two/] ...

  • Leecode 位运算

    231. 2的幂[https://leetcode-cn.com/problems/power-of-two/] ...

  • 【LeetCode】2的幂

    题目描述 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 2^...

  • 【LeetCode】4的幂

    题目描述: 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。示例 1:输入: 1...

  • LeetCode 50 实现一个pow(x,n) x的n次幂

    LeetCode 50 实现一个pow(x,n) x的n次幂 题目描述: 代码:

  • (n&n-1)==0是不是2的幂次

    leetcode231. 2的幂 “给定一个整数,编写一个函数来判断它是否是 2 的幂次方。” 有大神用一行代码搞...

  • Swift 3的幂 - LeetCode

    题目: 3的幂 描述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。 案例1: 示例 2: 案例 3: 案...

网友评论

    本文标题:[LeetCode]231-2的幂

    本文链接:https://www.haomeiwen.com/subject/bxjcxqtx.html