LeetCode-in-Go

50. Pow(x, n)

Medium

Implement pow(x, n), which calculates x raised to the power n (i.e., xn).

Example 1:

Input: x = 2.00000, n = 10

Output: 1024.00000

Example 2:

Input: x = 2.10000, n = 3

Output: 9.26100

Example 3:

Input: x = 2.00000, n = -2

Output: 0.25000

Explanation: 2-2 = 1/22 = 1/4 = 0.25

Constraints:

Solution

func myPow(x float64, n int) float64 {
	nn := int64(n)
	res := 1.0
	if n < 0 {
		nn = -nn
	}
	for nn > 0 {
		if nn%2 == 1 {
			nn--
			res *= x
		} else {
			x *= x
			nn /= 2
		}
	}
	if n < 0 {
		return 1.0 / res
	}
	return res
}