剑指offer十二之数值的整数次方
一、题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
二、思路
1、传统方法计算,时间复杂度O(n)
2、递归方式计算,时间复杂度O(logn)
当exponent为偶数时,例如求base^10,则result= base^5 * base^5;
当exponent为奇数数时,例如求base^11,则result= base^5 * base^5 * base;
接着采用递归的方法,计算base^5 即可。
三、代码
1、传统方法
public class Solution {
public double Power(double base, int exponent) {
double result=1;
for(int i=0;i<Math.abs(exponent);i++){
result *=base;
}
if(exponent<0){
result=1/result;
}
return result;
}
}
2、递归的方法
public class Solution {
public double Power(double base, int exponent) {
double result=0.0;
int n=Math.abs(exponent);
if(n==0)
return 1;
if(exponent==1)
return base;
if(exponent==-1)
return 1/base;
result =Power(base,n>>1)*Power(base,n>>1);
if((n&1)==1)
result*=base;
if(exponent<0)
result=1/result;
return result;
}
}
-------------------------------------------------------------------------------------------------
参考链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00
剑指offer十二之数值的整数次方的更多相关文章
- 剑指Offer - 九度1514 - 数值的整数次方
剑指Offer - 九度1514 - 数值的整数次方2013-11-30 00:49 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponen ...
- 剑指Offer:面试题11——数值的整数次方(java实现)
题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...
- 剑指offer(12)数值的整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目分析 这道题用传统的方法也可以做,只不过效率太低,这里我们用到快速幂的方法 ...
- 【剑指Offer】12、数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 本题看似比较简单,是一个简单的指数运算,但需要完 ...
- 剑指offer_面试题11 数值的整数次方_考察代码的完整性
测试通过代码: package t0825; public class Power { public static void main(String[] args){ System.out.print ...
- 剑指Offer(二十二):从上往下打印二叉树
剑指Offer(二十二):从上往下打印二叉树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/b ...
- 剑指Offer(二十五):复杂链表的复制
剑指Offer(二十五):复杂链表的复制 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...
- 剑指Offer(二十六):二叉搜索树与双向链表
剑指Offer(二十六):二叉搜索树与双向链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/ ...
- 剑指Offer(二十八):数组中出现次数超过一半的数字
剑指Offer(二十八):数组中出现次数超过一半的数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...
随机推荐
- boost-实用工具:noncopyable、optional、assign
1.noncopyable 让一个类从noncopyable继承可以实现禁止对象的复制,使用需要包含头文件"boost/noncopyable.hpp"或"boost/u ...
- Linux主机名域名修改问题
1.修改 /etc/sysconfig/network 配置文件 vi /etc/sysconfig/network 修改HOSTNAMEHOSTNAME=new-hostname.domainn ...
- IntelliJ IDEA 2017版 Spring5最基本的bean例子创建
一.简述 SpringBoot是基于spring框架之上的快速开发的框架.Spring4核心就是容器,容器提供了对bean的装配和管理. spring依赖加载: ...
- php 16进制颜色代码转换为rgba,rgb格式
<?php $rgb = hex2rgba('#FFFFFF', false, true); echo 'rgb: '.$rgb[0].','; echo $rgb[1].','; echo $ ...
- MyGeneration使用概述
1.首先要连接数据库,第一次启动myG的时候会弹出default settings对话框,以后也可以在Edit-default settings里面修改.default settings有3个tabs ...
- WordPaster-KesionCMS V8整合教程
1.上传WordPaster文件夹 2.上传ckeditor3x插件文件夹 4.修改ckeditor编辑器的config.js文件,启用插件,在工具栏中增加插件按钮 5.在文章页面增加插件初始化代码 ...
- 20171123IdleHandler
在Android中,我们可以处理Message,这个Message我们可以立即执行也可以delay 一定时间执行.Handler线程在执行完所有的Message消息,它会wait,进行阻塞,知道有心的 ...
- python基于pillow库的简单图像处理
from PIL import Image from PIL import ImageFilter from PIL import ImageEnhance import matplotlib.pyp ...
- SSM_CRUD新手练习(1)创建项目
最近看了SSM框架,网上找了个入门视频的比较简单的小项目熟悉一下框架.现在把整个过程记录下来. 1.创建Maven工程,注意我们选择的是simple project就够了. 这样我们的Maven项目就 ...
- java基础-day6
第06天 java基础语法 今日内容介绍 u Eclipse断点调试 u 基础语法的练习 第1章 Eclipse断点调试 1.1 Eclipse断点调试概述 Eclipse的断点调试可以 ...