美文网首页
LeetCode刷题 231. 2的幂

LeetCode刷题 231. 2的幂

作者: 逍遥白亦 | 来源:发表于2021-01-18 23:51 被阅读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;
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode刷题 231. 2的幂

          本文链接:https://www.haomeiwen.com/subject/cabfzktx.html