LeetCode刷题 231. 2的幂

2021-01-18  本文已影响0人  逍遥白亦

231. 2的幂

题目

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例1:

输入: 1
输出: true
解释: 2^0 = 1

示例 2:

输入: 16
输出: true
解释: 2^4 = 16

示例 3:

输入: 218
输出: false

思路

  1. 简单法
    每次对2取余,最终如果n==1,则该数为2的幂

  2. 数学法
    一个重要的信息可以从函数名中推导出来。

public boolean isPowerOfThree(int n)

我们可以看出 n 的类型是 int。在 Java 中说明了该变量是四个字节,他的最大值为 2147483647。

所以在小于2147483647里3的最大幂是1073741824

public class Solution {
    public boolean isPowerOfThree(int n) {
        return n > 0 && 1073741824 % n == 0;
    }
}

代码

class Solution {
    public boolean isPowerOfTwo(int n) {
        if( n < 1){
            return false;
        }

        while(n % 2 == 0){
            n >>= 1;
        }

        return n == 1;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读