Light's Blog

The best or nothing.

LeetCode Problems 之 数学

| Comments

数学

以下为 LeetCode 数学 相关问题解法记录。

326. 3的幂

方法一:模拟3的幂的过程,直到等于或超过给定的值,时间复杂度为多少?
方法二:通过数学公式转化,3m = n,log(3m) = logn,mlog3 = logn,m = logn / log3,判断m是否为整数即可,时间复杂度 O(1)。
代码:

1
2
3
4
5
6
7
8
9
class Solution {
    func isPowerOfThree(_ n: Int) -> Bool {
        if n == 0 {
            return false
        }
        let m = log10(Double(n)) / log10(3.0)
        return m - floor(m) == 0
    }
}

启发:通过数学公式简单的变化,将原问题转化为可直接计算的问题,降低复杂度。

Comments