LeetCode - #50 Pow(x, n)

简介: 不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。

前言

我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。

LeetCode 算法到目前我们已经更新了 49 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。

不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。

难度水平:中等

1. 描述

实现 pow(x, n) ,即计算 xn 次幂函数(即,x^n )。

2. 示例

示例 1

输入:x = 2.00000, n = 10
输出:1024.00000

示例 2

输入:x = 2.10000, n = 3
输出:9.26100

示例 3

输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

约束条件:

  • -100.0 < x < 100.0
  • -2^31 <= n <= 2^31-1
  • -10^4 <= x^n <= 10^4

3. 答案

class Pow {
   
    func myPow(x: Double, _ n: Int) -> Double {
   
        var x = x, n = n

        if n < 0 {
   
            x = 1.0 / x
            n = -n
        }

        var res = 1.0

        while n > 0 {
   
            if n % 2 != 0 {
   
                res *= x
            }
            x *= x
            n /= 2
        }

        return res
    }
}
  • 主要思想:经典递归,先处理正负情况。
  • 时间复杂度: O(logn)
  • 空间复杂度: O(n)

该算法题解的仓库:LeetCode-Swift

点击前往 LeetCode 练习

关于我们

我们是由 Swift 爱好者共同维护,我们会分享以 Swift 实战、SwiftUI、Swift 基础为核心的技术内容,也整理收集优秀的学习资料。

后续还会翻译大量资料到我们公众号,有感兴趣的朋友,可以加入我们。

相关文章
|
2月前
|
算法 C++
Leetcode第50题(Pow(x,n))
这篇文章介绍了如何使用快速幂算法解决LeetCode第50题,即实现函数pow(x, n)来计算x的n次幂,并提供了C++的代码实现。
16 0
|
4月前
|
算法 Java
LeetCode第50题Pow(x, n)
LeetCode第50题"Pow(x, n)"的解题方法,运用分而治之的策略,通过快速幂算法高效计算幂函数的结果。
LeetCode第50题Pow(x, n)
|
4月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
32 1
|
Java
Leetcode 372. Super Pow
真正的解法其实思路很简单,我随便举个例子就很容易理解了,假设要求(123^4567)%1337,只需要把这个幂式子分解成几个层次,然后把球模加到每一层中间就很容易计算出来了。
47 0
|
算法 API
leetcode:50.Pow(x, n)
实现 pow(x, n),即计算 x 的 n 次幂函数。
52 0
LeetCode 372. Super Pow
你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。
82 0
LeetCode 372. Super Pow
LeetCode 50. Pow(x, n)
实现pow(x,n),即计算x的n次方
89 0
LeetCode 50. Pow(x, n)
|
存储 机器学习/深度学习 算法
LeetCode 49字母异位词分组&50pow(x,n)&51八皇后
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
138 0
LeetCode 49字母异位词分组&50pow(x,n)&51八皇后
|
算法 Java Python
ACM 选手图解 LeetCode Pow(x,n)
ACM 选手图解 LeetCode Pow(x,n)
ACM 选手图解 LeetCode Pow(x,n)