leetcode 231 2的冪

描述:

給定一個整數,編寫一個函數來判斷它是不是 2 的冪次方。java

示例 1:

輸入: 1
輸出: true
解釋: 20 = 1複製代碼

示例 2:

輸入: 16
輸出: true
解釋: 24 = 16複製代碼

示例 3:

輸入: 218
輸出: false
複製代碼

思路:

【1】  1bash

【2】10函數

【4】100ui

【8】1000spa

...code

能夠找一下2的冪的共同點,有且只有一個1,因此能夠經過 (n != 0 && (n&(n-1) == 0))來判斷。cdn

在java中 Integer.MIN_VALUE - 1 = Integer.MAX_VALUE(和補碼有關)。而Integer.MAX_VALUE & Integer.MIN_VALUE 等於0 ,因此當n爲Integer.MIN_VALUE的時候,該式子不成立,須要進行一個參數判斷
blog

當n == Integer.MIN_VALUE就直接返回false,ssl

其實更好的處理方法就是當 n<=0的時候直接返回false,由於2的冪函數圖像只在第1、二象限,隨着x的減小隻會無限趨近於0,不會等於0,因此當 n<=0時能夠直接返回false。
it

代碼:

class Solution {
  public boolean isPowerOfTwo(int n) {
    return n <= 0 ? false : (n & (n - 1)) == 0;
  }
}
複製代碼


結果:


複製代碼
相關文章
相關標籤/搜索