• 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     }
  • 相关阅读:
    UWA 技术分享连载 转载
    移动游戏加载性能和内存管理全解析 学习
    英语书籍阅读
    2017年6月
    Unity 官方文档学习
    YAML Class ID Reference
    Unity Blog 学习
    希腊字母
    2017年5月
    转载:书籍
  • 原文地址:https://www.cnblogs.com/feiling/p/2957344.html
Copyright © 2020-2023  润新知