今天和大家聊的问题叫做 3的幂,我们先来看题面:https://leetcode-cn.com/problems/power-of-three/
Given an integer n, return true if it is a power of three. Otherwise, return false.
An integer n is a power of three, if there exists an integer x such that n == 3x.
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
示例
示例 1: 输入:n = 27 输出:true 示例 2: 输入:n = 0 输出:false 示例 3: 输入:n = 9 输出:true 示例 4: 输入:n = 45 输出:false
解题
解法1:循环
class Solution { public: bool isPowerOfThree(int n) { if(n==1) return true; long m=1; while(m<n) { m*=3; if(m==n) return true; } return false; } };
解法2:递归
class Solution { public: bool isPowerOfThree(int n) { if(n==1) return true; else if(n==0) return false; else return isPowerOfThree(n/3)&&n%3==0; } };
解法3:
3的幂次质因子只有3,而整数范围内的3的幂次最大是1162261467 class Solution { public: bool isPowerOfThree(int n) { return n > 0 && 1162261467%n == 0; } };
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。