【一天一道LeetCode】#326. Power of Three

来源:互联网 发布:剑灵捏脸数据怎么下载 编辑:程序博客网 时间:2024/06/16 23:03

一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处

(一)题目

Given an integer, write a function to determine if it is a power of three.

Follow up:
Could you do it without using any loop / recursion?

(二)解题

题目大意:判断一个是不是3的n次方。

解题思路:很容易就想到将该数每次都除以3,如果整除则继续除,直到等于1就表示是3的n次方,否则就不是。

class Solution {public:    bool isPowerOfThree(int n) {        int num=n;             while(num>0 && num%3==0)  //整除            num/=3;          return num==1;    }};

但是题目中提到,能不能不用循环或者递归来解题。可是想了半天都没有想到,无奈只能求助百度了。

在int范围内的3的n次方最大为3的19次方1162261467,如果num时3的n次方数的话,一定能被1162261467整除。

于是有下面的代码:

class Solution {public:    bool isPowerOfThree(int n) {        return n>0?(1162261467%n==0?true:false):false;    }};

还有的方法就是列举法,也就19个数,判断跟这19个数中任意一个相不相等即可。

0 0
原创粉丝点击