gpt4 book ai didi

326. Power of Three 3 的幂

转载 作者:大佬之路 更新时间:2024-01-31 14:20:28 26 4
gpt4 key购买 nike

题目地址:https://leetcode.com/problems/power-of-three/open in new window

Total Accepted: 38705 Total Submissions: 105634 Difficulty: Easy

题目描述

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

Example 1:

Input: 27
Output: true

Example 2:

Input: 0
Output: false

Example 3:

Input: 9
Output: true

Example 4:

Input: 45
Output: false

Follow up:

  • Could you do it without using any loop / recursion?

题目大意

判断一个数是不是3的幂。

解题方法

循环

这是最简单的方法了,就是一直除以3,直到最后看看剩下的是不是1.

class Solution(object):
    def isPowerOfThree(self, n):
        """
        :type n: int
        :rtype: bool
        """
        if n == 0: return False
        while n % 3 == 0:
            n /= 3
        return n == 1

1 2 3 4 5 6 7 8 9 10

递归

递归解法速度反而更快。

class Solution(object):
    def isPowerOfThree(self, n):
        """
        :type n: int
        :rtype: bool
        """
        if n <= 0: return False
        if n == 1: return True
        if n % 3 == 0:
            return self.isPowerOfThree(n / 3)
        return False

1 2 3 4 5 6 7 8 9 10 11

取对数

取对数。看一个数以3为底的对数是否为整数。好吧还是挺聪明的。

public class Solution {
    public boolean isPowerOfThree(int n) {
        return (Math.log10(n)/Math.log10(3)) % 1 == 0;
        
    }
}

1 2 3 4 5 6

AC:20ms

判断是不是最大3的倍数的因子

还有一种方法是说,先找出最大的3的幂的int,再看n能否整除这个数。效率应该比这个高,没有试。可以参考:

public boolean isPowerOfThree(int n) {
     return n>0 && Math.pow(3, (int)(Math.log(0x7fffffff)/Math.log(3)))%n==0;
}

1 2 3

DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有

本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com