1. 程式人生 > >leetcode231:二的冪

leetcode231:二的冪

思想:

題目要求給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。若一個整數是2的冪次方,則二進位制數表達形式中只有一個1,這樣才會是2的冪次方。首先定義一個變數記錄1出現的次數,再者判斷這個數是否小於等於0,若是則直接返回False,反之進入迴圈。將n和1相與,若為1則count+1,在判斷count是否大於1,若是則返回False,反之將n左移1位,繼續判斷,直到結束。

class Solution(object):
    def isPowerOfTwo(self, n):
        """
        :type n: int
        :rtype: bool
        """
        count =0
        if n<=0:
            return False
        while n>0:
            if n&1:
                count+=1
                if count >1:
                    return False
            n>>=1
        return True

小菜鳥興高采烈地寫出來了,然後大佬的程式總是能那麼的簡短和高水平。。。。。

class Solution(object):
    def isPowerOfTwo(self, n):
        """
        :type n: int
        :rtype: bool
        """
        return n != 0 and (n & -n) == n

大佬的腦袋估計和常人不一樣吧!!!!(我計算過程式碼成立,但是為什麼這樣就是2的冪次方還是不懂,嗚嗚)