博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer面试题16. 数值的整数次方——快速幂
阅读量:4072 次
发布时间:2019-05-25

本文共 638 字,大约阅读时间需要 2 分钟。

剑指offer面试题16. 数值的整数次方——快速幂

题目

实现 pow(x, n) ,即计算 x 的 n 次幂函数。不得使用库函数,同时不需要考虑大数问题。

示例:

输入:x = 2.00000, n = 10输出:1024.00000

思路

  • 刚开始用的试模拟的方法,通过循环n个x乘起来,时间复杂度为O(n)。运行时候会超出时间限制。故该方法舍弃!
  • 之后看题解了解到快速幂。该方法的详细过程如下:
    在这里插入图片描述
    在这里插入图片描述

代码

  • 用的是Java代码,Java 代码中 int32 变量 n 范围是[-2147483648, 2147483647],因此当 n = -2147483648时执行 n = -n会因越界而赋值出错。解决方法是先将 n存入 long 变量 b,后面用 b 操作即可。
class Solution {    public double myPow(double x, int n) {        if(x==0) return 0;        long b=n;        if(b<0){            x=1/x;            b=-b;        }        double sum=1;        while(b>0){            if((b&1)==1)sum*=x;            x*=x;            b>>=1;        }        return  sum;    }}

转载地址:http://vtgji.baihongyu.com/

你可能感兴趣的文章
form表单嵌套提交
查看>>
Error:(3, 32) java: 程序包org.springframework.boot不存在
查看>>
用python画一只可爱的布朗熊
查看>>
【spring】spring boot多数据源配置(方式二)
查看>>
【RPC】一步一步实现基于netty+zookeeper的RPC框架(一)
查看>>
【RPC】一步一步实现基于netty+zookeeper的RPC框架(二)
查看>>
【RPC】一步一步实现基于netty+zookeeper的RPC框架(三)
查看>>
【RPC】一步一步实现基于netty+zookeeper的RPC框架(四)
查看>>
【RPC】一步一步实现基于netty+zookeeper的RPC框架(五)
查看>>
【RPC】一步一步实现基于netty+zookeeper的RPC框架(六)
查看>>
生成支持分布式部署的唯一id代码实现
查看>>
支持分表的ORM框架实现
查看>>
jquery easyui datagrid subgrid edit
查看>>
java集合(ArrayList、vector、HashMap、HashTable)源码剖析
查看>>
补充另一版ArrayList的初始化过程
查看>>
java接口不能实例化原因浅谈
查看>>
Https加密及攻防
查看>>
Java生成随机不重复推广码邀请码
查看>>
Java8 Lambda表达式介绍
查看>>
Java8 stream流介绍
查看>>