美文网首页
leetcode 231 python 2的幂

leetcode 231 python 2的幂

作者: 慧鑫coming | 来源:发表于2019-01-31 14:12 被阅读0次

    传送门

    题目要求

    给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

    示例 1:
    输入: 1
    输出: true
    解释: 20 = 1

    示例 2:
    输入: 16
    输出: true
    解释: 24 = 16

    示例 3:
    输入: 218
    输出: false

    思路一

    n小于1,肯定不会是2的幂;当n大于1时,如果出现了n%2 != 0 这种情况,说明n也不是2的幂,所以可以对n做循环取余操作,能坚持下来,它就是2的幂

    →_→ talk is cheap, show me the code

    class Solution:
        def isPowerOfTwo(self, n):
            """
            :type n: int
            :rtype: bool
            """
            if n < 1:
                return False
            while n > 1:
                if n % 2 != 0:
                    return False
                n = n // 2
            return True
    

    思路二

    1的二进制0001, 2的二进制0010, 4的二进制0100, 8的二进制1000,发现了什么,对,2的幂的二进制表示有且只有一个 1,当它们减少1时,会怎样?原来1的位置变为0,原来1后面的0都变成1,有搞头没?

    →_→ talk is cheap, show me the code

    class Solution:
        def isPowerOfTwo(self, n):
            """
            :type n: int
            :rtype: bool
            """
            if n < 1:
                return False
            return n & n-1 == 0
    

    相关文章

      网友评论

          本文标题:leetcode 231 python 2的幂

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