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     }
  • 相关阅读:
    [PA2014]Muzeum
    [TJOI2015]概率论
    To Do List
    【洛谷4172】 [WC2006]水管局长(LCT)
    HNOI2019退役记
    hdu 2159 FATE
    USACO 2019 January Contest, Platinum 题解
    luogu4774 [NOI2018]屠龙勇士
    NOI 2019游记
    loj #3145. 「APIO 2019」桥梁
  • 原文地址:https://www.cnblogs.com/feiling/p/2957344.html
Copyright © 2011-2022 走看看