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 };
  • 相关阅读:
    厚积薄发IT咨询
    厚积薄发SQL技巧
    厚积薄发CSS
    厚积薄发数据库迁移
    厚积薄发系统安全日志已满处理

    厚积薄发SQLServer内核架构浅析
    厚积薄发css布局页面头部
    常用正则表达式
    一条SQL语句OA
  • 原文地址:https://www.cnblogs.com/VickyWang/p/6018999.html
Copyright © 2011-2022 走看看