zoukankan      html  css  js  c++  java
  • [LeetCode] Pow(x, n)

    Implement pow(xn).

     

    有史以来做过最简单的一题,大概用5分钟ac,我采用fast exponential,这个在sicp的第一章就有描述。思想是:如果n是偶数的话,那么m^n = (m^(n/2))^2, 如果n是奇数,那么m^n = m*m^(n-1)。这样一来是O(logn)的。
    需要特殊处理的是n是负数的情况,也很好办,如果指数是负数,那么最终结果会变成倒数。

     1 class Solution {
     2 public:
     3     double pow(double x, int n) {
     4         if (n == 0) return 1;
     5         else if (n == 1){
     6             return x;
     7         }
     8         else if (n == -1){
     9             return 1/x;
    10         }
    11         if (n % 2 == 0){
    12             //even
    13             double t = pow(x,n/2)
    14             return t*t
    15         }else {
    16             return pow(x, n-1)*x;
    17         }
    18     }    
  • 相关阅读:
    @atcoder
    @loj
    @AGC037
    @uoj
    @uoj
    @loj
    @loj
    @loj
    @loj
    @loj
  • 原文地址:https://www.cnblogs.com/agentgamer/p/3696786.html
Copyright © 2011-2022 走看看