【LeetCode】(簡單)231. 2的冪(3種思路)

在這裏插入圖片描述

思路:

  1. 最普通的思路就是無限的給這個n除以2,看它最後是不是等於1。但是這個方法特別耗內存,性能較低。
  2. 看leetcode評論說,2的冪一定可以被2的31次冪整除,這也可以判斷。
  3. 最最最精妙的方法就是用二進制來做。如果這個數的二進制只有一位1,那就是2的冪。那怎麼判斷是不是隻有1位呢。舉個例子,8的二進制是1000,7的二進制是0111,在《劍指offer》上有過怎麼消除最低位的1的方法。那就是n&(n-1),n-1一定會把n的最低位1後面的0全變爲1,而自己變爲0。那麼也就是7和8進行與運算,結果是0。

代碼:

class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n<=0) return false;
        return (n & (n-1))==0;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章