zoukankan      html  css  js  c++  java
  • Leetcode 50. Pow(x, n)

    50. Pow(x, n)

    Total Accepted: 96891 Total Submissions: 348858 Difficulty: Medium

    Implement pow(xn).

    思路:分情况讨论:
    1.n=0,返回1

    2.n<0,转换为n>0的情况处理

    3.n>0,举个例子:n=19时。

    19=10011,所以x^19=x^10011=x^(10000+10+1)。所以只要看n的最末尾是否为1,如果为1,则累乘当前的x。每个循环,x=x*x,n=n>>1(n/2)。

    注意:int的最小值INT_MIN=-2147483648,int的最大值INT_MAX=2147483647,可以看到INT_MIN!=INT_MAX;

    代码:

    迭代:

     1 class Solution {
     2 public:
     3     double myPow(double x, int n) {
     4         if(n<0){
     5             if(n==INT_MIN) return 1.0/(x*myPow(x,INT_MAX));
     6             return 1.0/myPow(x,-n);
     7         }
     8         if(n==0){
     9             return 1;
    10         }
    11         double product=1;
    12         for(;n>0;x*=x,n=n>>1){
    13             if(n&1){
    14                 product*=x;
    15             }
    16         }
    17         return product;
    18     }
    19 };

    递归:

     1 class Solution {
     2 public:
     3     double myPow(double x, int n) {
     4         if(n==0) return 1.0;
     5         double product=myPow(x,n/2);
     6         product*=product;
     7         if(n<0){
     8             x=1/x;
     9         }
    10         return (n%2==0)?product:product*x;
    11     }
    12 };
  • 相关阅读:
    函数方法与面向对象
    seleniums私房菜系列一 ---- selenium简介
    MySQL图形化管理工具
    存储引擎
    mysql自定义函数
    加密函数
    mysql聚合函数
    mysql信息函数
    mysql日期时间函数(常用的)
    mysql比较运算符和函数
  • 原文地址:https://www.cnblogs.com/Deribs4/p/5635301.html
Copyright © 2011-2022 走看看