zoukankan      html  css  js  c++  java
  • LeetCode--050--Pow(x,n) (java and python)

    实现 pow(xn) ,即计算 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] 。

    思路:不断分解幂进行递归,2^3 = 2^1 * 2^1 * 2 =(2^0 *2^0 *2)(2^0 *2^0*2)*2

     1 class Solution {
     2     public double myPow(double x, int n) {
     3         if(n > 0){
     4             return pow(x,n);
     5         }else{
     6             return 1/pow(x,n);
     7         }
     8     }
     9     public double pow(double x,int n){
    10         if(n == 0){
    11             return 1;
    12         }
    13         double y = pow(x,n/2);
    14         if(n % 2 == 0){
    15             return y * y;
    16         }else{
    17             return y * y * x;
    18         }
    19     }
    20 }

    写法2:

     1 class Solution {
     2     public double myPow(double x, int n) {
     3         if (n == 0)return 1;
     4         double res = 1;
     5         long abs = Math.abs((long)n);
     6         while(abs > 0){
     7             if(abs % 2 != 0){
     8                 res *= x;
     9             }
    10             x *= x;
    11             abs /= 2;
    12         }
    13         if(n < 0){
    14             return 1/res;
    15         }
    16         return res;
    17     }
    18     
    19 }

    2019-05-08 17:56:53

    python版本

     1 class Solution:
     2     def myPow(self, x: float, n: int) -> float:
     3         def help(x,n):
     4             if n == 0:
     5                 return 1
     6             half = help(x,n//2)
     7             if n % 2 == 0:
     8                 return half*half
     9             else:
    10                 return half * half * x
    11         if n < 0:
    12             x = 1 / x
    13             n = abs(n)
    14         return help(x,n)

    2020-01-12 09:02:57

  • 相关阅读:
    数组列简介
    linq的使用
    StringBuilder对象
    使用类来继承接口
    设置函数库并引用
    循环语句
    cut和paste用法
    uniq用法
    shell中数组的应用
    委派
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/10833457.html
Copyright © 2011-2022 走看看