[Medium]LeetCode#50. Pow(x, n)

[Medium]LeetCode#50. Pow(x, n)

题目原地址

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

示例 1:

输入: 2.00000, 10
输出: 1024.00000
示例 2:

输入: 2.10000, 3
输出: 9.26100
示例 3:

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

  • -100.0 < x < 100.0
  • n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
  • 基本算法,循环乘,但是超时了
func myPow(x float64, n int) float64 {
    if x == 1.0 {
        return 1.0
    }
    res := x
    f := 1
    if n < 0 {
        n = -n
        f = -1
    }
    for i := n; i < n; i++ {
        if f == 1 {
            res *= res
        } else {
            res /= res
        }
        if res < -2147483648 {
            res = -2147483648
            break
        }
        if res > 2147483647 {
            res = 2147483647
            break
        }
    }
    return res
}
  • 0ms,判断n是否是2的倍数,是的话就x相乘,否则的话就res和x相乘
func myPow(x float64, n int) float64 {
    if n < 0{
        x = 1/x
        n = -n
    }
    var result float64 = 1.0
    for n > 0{
        if n & 1 == 1{
            result *= x
        }
        x *=x
        n >>=1
    }
    return result
}