Files
leetcode/50.pow-x-n.java
2025-10-28 15:52:13 +08:00

34 lines
757 B
Java

/*
* @lc app=leetcode id=50 lang=java
*
* [50] Pow(x, n)
*/
// @lc code=start
import java.util.Map;
class Solution {
public double myPow(double x, int n) {
Map<Long, Double> track = new HashMap<>();
long m = n;
return m>=0?myPow(x, m, track):1/myPow(x, -m, track);
}
private double myPow(double x, long n, Map<Long, Double> track) {
if(n < 0) {
throw new RuntimeException("not supported number");
} else if(n <= 1) {
return n==0?1:x;
} else if(track.containsKey(n)) {
return track.get(n);
}
long l = n / 2;
double r = myPow(x, l, track) * myPow(x, n-l, track);
track.put(n, r);
return r;
}
}
// @lc code=end