力扣第27刷-3 的幂

简介: 力扣第27刷-3 的幂

Example 27

3 的幂

题目概述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

示例 1:

输入:n = 27

输出:true

示例 2:

输入:n = 0

输出:false

示例 3:

输入:n = 9

输出:true

示例 4:

输入:n = 45

输出:false

解题思路:在题目给定的32 位有符号整数的范围内,最大的3 的幂为 319 = 11622614673 。因此只需要判断n 是否是 319的约数即可。

除此之外,还需要特殊判断n 是负数或0 的情况。

解题步骤:

1. 判断是否n大于0(n小于等于0时,n一定不是3的幂)且11622614673能够被n整除(只有3的幂次方才能整除11622614673),并将结果返回。

 

示例代码如下:

public class PowerOfThree {
    /**
     * 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
     * 整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
     * 示例 1:
     * 输入:n = 27
     * 输出:true
     * 示例 2:
     * 输入:n = 0
     * 输出:false
     * 示例 3:
     * 输入:n = 9
     * 输出:true
     * 示例 4:
     * 输入:n = 45
     * 输出:false
     * 来源:力扣(LeetCode)
     * 链接:https://leetcode.cn/problems/power-of-three
     */
    public static void main(String[] args) {
        PowerOfThree pot = new PowerOfThree();
        System.out.println(pot.isPowerOfThree(27)); // true
    }
    /**
     * 官方
     *
     * @param n
     * @return
     */
    public boolean isPowerOfThree(int n) {
        return n > 0 && 1162261467 % n == 0;
    }
    /**
     * 个人
     * @param n
     * @return
     */
    /*public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;
        while (n % 3 == 0) n = n / 3;
        return n == 1;
    }*/
}
相关文章
刷 leetcode三个数的最大乘积 | 刷题打卡
刷 leetcode三个数的最大乘积 | 刷题打卡
62 0
|
存储 算法
【刷算法】LeetCode- 两数之和
【刷算法】LeetCode- 两数之和
|
存储 算法
【刷算法】LeetCode.2-两数相加
【刷算法】LeetCode.2-两数相加
|
算法
【刷算法】LeetCode- 阶乘后的零
【刷算法】LeetCode- 阶乘后的零
|
算法
【刷算法】丑数
【刷算法】丑数
|
机器学习/深度学习 存储