zoukankan      html  css  js  c++  java
  • Letcode 题:pow(x,n)

    最初的想法,将输入乘以n-1次,时间复杂度为O(n),结果运行结果超时

     1 public class Solution {
     2     public double pow(double x, int n) {
     3         double result = x;
     4         double tmp = 1/x;
     5         if(n == 0)
     6             return 1;
     7         
     8         if(n > 0){
     9             for(int i = 1; i < n; i++)
    10                 result = result * x;
    11         } else{
    12             for(int j = n; j < -1; j++)
    13                 result = result * tmp;
    14         }
    15             
    16         return result;
    17         
    18     }
    19 }

    2.用二分:
    xn = xn/2 * xn/2 * xn%2
    时间复杂度:O(logN)
    这样,使用递归函数,大数据超时

     1     public double pow(double x, int n) {
     2         double result = x;
     3         if (x == 0){
     4             if(n == 0)
     5                 return 1;
     6             else
     7                 return 0;
     8         }
     9 
    10         if (n == 0)
    11             return 1;
    12         if (n == 1)
    13             return x;
    14             
    15         if (n == -1)
    16             return 1/x;
    17         
    18         if(n >= 2)
    19             return pow(x, n / 2) * pow(x, n / 2) * pow(x, n % 2);
    20         else{
    21             int absn = Math.abs(n);
    22             return 1 / (pow(x, absn / 2) * pow(x, absn / 2) * pow(x, absn % 2));
    23         }
    24             
    25     }
  • 相关阅读:
    移动端 app
    python 3.8 新特性
    vue 路由歪招
    VUE 关于组件依赖的问题
    vue 全局注册组件
    CSS小技巧
    vue踩坑记 页面跳转不新
    vuecli eslint 语法错误解决办法
    vue v-slot用法测试
    终止 IdFtp下载
  • 原文地址:https://www.cnblogs.com/feiling/p/2957344.html
Copyright © 2011-2022 走看看