zoukankan      html  css  js  c++  java
  • 【剑指offer】12 数值的整数次方

    题目地址:数值的整数次方

    题目描述                                   

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
     
    保证base和exponent不同时为0。

    题目示例                                   

    输入:
    2,3
    返回值:
    8.00000

    解法分析                                   

    看到题目第一个想到的方法就是用Math.pow(base,exponent)或者base**exponent…但是做题肯定不能用现成的轮子,用最简单的就是用循环实现,见算法1。

    但是这种方法效率太低,时间复杂度为 O(N),我们可以考虑使用快速幂的办法解决问题。

    快速幂的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算,时间复杂度为 O(logN),效率高不少,见算法2。

    代码                                         

    算法1:

     1 function Power(base, exponent)
     2 {
     3     // write code here
     4     var n = 1;
     5     if(base == 0){
     6         return 0;
     7     }else if(exponent == 0){
     8         return 1;
     9     }else if(exponent > 0){
    10         while(exponent--){
    11             n *= base;
    12         }
    13         return n;
    14     }else if(exponent < 0){
    15         while(exponent++){
    16             n *= base;
    17         }
    18         return 1/n;
    19     }
    20 }

    算法2:

     1 function Power(base, exponent)
     2 {
     3     // write code here
     4     if(base == 0){
     5         return 0;
     6     }else if(exponent == 0){
     7         return 1;
     8     }else if(exponent < 0){
     9         base = 1 / base;
    10         exponent = -exponent;
    11     }
    12     var n = base;
    13     var res = 1;
    14     while(exponent){
    15         if(exponent & 1){
    16             res *= n;
    17         }
    18         n *= n;
    19         exponent >>= 1;
    20     }
    21     return res;
    22 }

    执行结果                                   

  • 相关阅读:
    关于SQL
    win10商店或者账户连不上网
    pom.xml红叉
    3D球状标签云(兼容IE8)
    网页宽高自适应大小
    html5定位并在百度地图上显示
    【转】Javascript 中的false,零值,null,undefined和空字符串对象
    jQuery checkBox 全选的例子
    jQuery 表单验证 jquery.validator.js
    jQuery 手风琴侧边菜单
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14272200.html
Copyright © 2011-2022 走看看