LeetCode刷题 231. 2的幂

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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 231. 2的幂给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例:输入: 1 -> 输出: true输...
    杏仁小核桃阅读 1,085评论 0 1
  • 231. 2的幂 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 示例 2: 示例 3: P...
    leacoder阅读 1,137评论 0 1
  • 题目 难度:★☆☆☆☆类型:数学 给定一个整数,写一个函数来判断它是否是 3 的幂次方。 进阶:你能不使用循环或者...
    玖月晴阅读 3,535评论 0 0
  • 【题目描述】给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 【示例1】 【示例2】 【示例3】 【思路】...
    1江春水阅读 1,092评论 0 0
  • 题目 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1:输入: 1输出: true解释: 20 ...
    FesonX阅读 1,748评论 0 1