• Leecode刷题之旅-C语言/python-326 3的幂


    /*
     * @lc app=leetcode.cn id=326 lang=c
     *
     * [326] 3的幂
     *
     * https://leetcode-cn.com/problems/power-of-three/description/
     *
     * algorithms
     * Easy (42.85%)
     * Total Accepted:    14.2K
     * Total Submissions: 33.1K
     * Testcase Example:  '27'
     *
     * 给定一个整数,写一个函数来判断它是否是 3 的幂次方。
     * 
     * 示例 1:
     * 
     * 输入: 27
     * 输出: true
     * 
     * 
     * 示例 2:
     * 
     * 输入: 0
     * 输出: false
     * 
     * 示例 3:
     * 
     * 输入: 9
     * 输出: true
     * 
     * 示例 4:
     * 
     * 输入: 45
     * 输出: false
     * 
     * 进阶:
     * 你能不使用循环或者递归来完成本题吗?
     * 
     */
    bool isPowerOfThree(int n) {       
         if(n<=0){
             return false;
         }
         while(n>1){            
             if(n%3!=0) return false;           
              n /=3;        
            }        
        return true;
    }

    和2的幂思路一样的算法。

    但是题目有个进阶要求 不使用循环或者递归

    这里计算最大的3的幂次方的数 然后判断n能否被这个数整除即可。

    /*
     * @lc app=leetcode.cn id=326 lang=c
     *
     * [326] 3的幂
     *
     * https://leetcode-cn.com/problems/power-of-three/description/
     *
     * algorithms
     * Easy (42.85%)
     * Total Accepted:    14.2K
     * Total Submissions: 33.1K
     * Testcase Example:  '27'
     *
     * 给定一个整数,写一个函数来判断它是否是 3 的幂次方。
     * 
     * 示例 1:
     * 
     * 输入: 27
     * 输出: true
     * 
     * 
     * 示例 2:
     * 
     * 输入: 0
     * 输出: false
     * 
     * 示例 3:
     * 
     * 输入: 9
     * 输出: true
     * 
     * 示例 4:
     * 
     * 输入: 45
     * 输出: false
     * 
     * 进阶:
     * 你能不使用循环或者递归来完成本题吗?
     * 
     */
    bool isPowerOfThree(int n) {      
        if(n<=0)
        {
            return false;
        }
        int max3Power=(int)pow(3,(int)(log(0x7fffffff)/log(3)));
        if (max3Power%n==0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    --------------------------------------------------------------------------

    python:

    #
    # @lc app=leetcode.cn id=326 lang=python3
    #
    # [326] 3的幂
    #
    # https://leetcode-cn.com/problems/power-of-three/description/
    #
    # algorithms
    # Easy (42.85%)
    # Total Accepted:    14.2K
    # Total Submissions: 33.1K
    # Testcase Example:  '27'
    #
    # 给定一个整数,写一个函数来判断它是否是 3 的幂次方。
    # 
    # 示例 1:
    # 
    # 输入: 27
    # 输出: true
    # 
    # 
    # 示例 2:
    # 
    # 输入: 0
    # 输出: false
    # 
    # 示例 3:
    # 
    # 输入: 9
    # 输出: true
    # 
    # 示例 4:
    # 
    # 输入: 45
    # 输出: false
    # 
    # 进阶:
    # 你能不使用循环或者递归来完成本题吗?
    # 
    #
    class Solution:
        def isPowerOfThree(self, n: int) -> bool:
            return n > 0 and 3**19 % n == 0
  • 相关阅读:
    页面头部出现空白,页面头部出现 隐藏字符
    使用TortoiseGit对Git版本进行分支操作
    文件夹添加右键DOS快捷入口
    android离线安装adt
    V9最新手机门户域名绑定教程。
    phpcms v9 模板标签说明整理
    CAM350 10.5移动和叠层的用法
    MOS简单应用
    c语言知识点总结-------静态区、堆、栈、常量区等
    C语言关键字—-sizeof 、typedef、const、static、register、extern、#define
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10563968.html
Copyright © 2020-2023  润新知