LeeCode 231 - daily01

有爲有不爲,知足知不足
銳氣藏於胸,和氣浮於面
才氣見於事,義氣施於人
— 豐子愷 ​​​

業精於勤…


題目描述:

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

Leecode 231 該題在小米公司微軟公司都曾被面過。

但是該題在面試過程中,真的不容易想到最優解。不過算法是一步一步演進的,不可能一步到位。

1. 普通解法

public boolean isPowerOfTwo(int n) {
        if(n <= 0) return false;
        while(n %2 == 0){
            n = n >> 1;
        }
        return n == 1;
    }

很顯然,時間複雜度爲O(logN)


2. 最優解

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