leetcode231:二的冪
阿新 • • 發佈:2018-11-11
思想:
題目要求給定一個整數,編寫一個函式來判斷它是否是 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的冪次方還是不懂,嗚嗚)