zoukankan      html  css  js  c++  java
  • LeetCode 326 Power of Three

    Problem:

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

    Could you do it without using any loop / recursion?

    Summary:

    用非循环/递归的方法判断数n是否为3的整数幂。

    Analysis:

    1. 循环:将n逐次除以3,判断是否为3的整数幂。

     1 class Solution {
     2 public:
     3     bool isPowerOfThree(int n) {
     4         if (n <= 0) {
     5             return false;
     6         }
     7         while (n > 1) {
     8             if (n % 3) {
     9                 return false;
    10             }
    11             
    12             n /= 3;
    13         }
    14         
    15         return true;
    16     }
    17 };

     2. 递归:若n为3的整数幂,n/3必为3的整数幂,以这个思想构建递归。

     1 class Solution {
     2 public:
     3     bool isPowerOfThree(int n) {
     4         if (n <= 0) {
     5             return false;
     6         }
     7         
     8         if (n == 1) {
     9             return true;
    10         }
    11         
    12         return (n % 3 == 0) && isPowerOfThree(n / 3);
    13     }
    14 };

     3. 非循环/递归:n若为3的整数幂,则 n = 3log3n = 3log2n / log 2

    1 class Solution {
    2 public:
    3     bool isPowerOfThree(int n) {
    4         return (n > 0) && (n == pow(3, round(log(n) / log(3))));
    5     }
    6 };
  • 相关阅读:
    Codeforces Canda Cup 2016
    Codeforces Round #377(div 2)
    后缀数组专题
    Codeforces Round #375(div 2)
    Codeforces Round #374(div 2)
    [HDU5902]GCD is Funny(xjb搞)
    [HDU5904]LCIS(DP)
    HDU 1251统计难题
    POJ2104 K-TH NUMBER 传说中的主席树
    poj 3041
  • 原文地址:https://www.cnblogs.com/VickyWang/p/6018999.html
Copyright © 2011-2022 走看看