題目:給定一個(gè)double類型的浮點(diǎn)數(shù)base和int類型的整數(shù)exponent。求base的exponent次方。
練習(xí)地址
https://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00
https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/
方法1
public class Solution {
public double Power(double base, int exponent) {
if (base == 0) {
return 0;
}
if (exponent == 0) {
return 1;
}
boolean negative = exponent < 0;
if (negative) {
exponent = -exponent;
}
double result = base;
while (--exponent > 0) {
result *= base;
}
return negative ? 1 / result : result;
}
}
復(fù)雜度分析
- 時(shí)間復(fù)雜度:O(n)闯冷。
- 空間復(fù)雜度:O(1)。
方法2
public class Solution {
public double Power(double base, int exponent) {
if (base == 0) {
return 0;
}
if (exponent == 0) {
return 1;
}
boolean negative = exponent < 0;
if (negative) {
exponent = -exponent;
}
double result = powerWithExponent(base, exponent);
return negative ? 1 / result : result;
}
private double powerWithExponent(double base, int exponent) {
if (exponent == 0) {
return 1;
}
if (exponent == 1) {
return base;
}
double result = powerWithExponent(base, exponent >> 1);
// n為偶數(shù)時(shí)天揖,a^n=a^(n/2)*a^(n/2)摸屠;n為奇數(shù)時(shí),a^n=a^(n/2)*a^(n/2)*a
result *= result;
if ((exponent & 1) == 1) {
result *= base;
}
return result;
}
}
復(fù)雜度分析
- 時(shí)間復(fù)雜度:O(logn)。
- 空間復(fù)雜度:O(logn)顶别。