首页 > 其他分享 >力扣---剑指 Offer 16. 数值的整数次方

力扣---剑指 Offer 16. 数值的整数次方

时间:2023-04-09 20:47:41浏览次数:41  
标签:myPow return tem Offer double 示例 else --- 16

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

 

示例 1:

输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:

输入:x = 2.10000, n = 3
输出:9.26100
示例 3:

输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25
 

提示:

-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= xn <= 104
 

注意:本题与主站 50 题相同:https://leetcode-cn.com/problems/powx-n/

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

不用想都可以知道这道题不是让你去一个一个地乘,那么,有什么可以提高效率的方法吗?

可以发现,假如我们计算 2 的 5 次方,我们可以直接算 ((2^2)^2) * 2^1;

这样的话,只需要算一次 2^2。n 再大一些呢,可以想到利用分治回溯来实现。

如果 n 是负数呢?可以发现,当 n 是 -1 时,计算的是 1/2,和 n 是正数可以用同一个思路。

由于用回溯解决,第一反应是使用递归,然后开始设计终止递归的条件。可以想到,当 n == 1 或者 n == -1 或者 n == 0 时,不需要再拆分。而此时,分别需要返回 x,1/x,0。

代码如下:

class Solution {
    public double myPow(double x, int n) {
        if (n == 0) {
            return 1;
        } else if (n == 1) {
            return x;
        } else if (n == -1) {
            return 1 / x;
        } else {
            double tem = myPow(x, n / 2);
            double tem2 = myPow(x, n % 2);
            return tem * tem * tem2;
        }
    }
}

 

标签:myPow,return,tem,Offer,double,示例,else,---,16
From: https://www.cnblogs.com/allWu/p/17300992.html

相关文章

  • 6360.等值距离和-340
    等值距离和给你一个下标从0开始的整数数组nums。现有一个长度等于nums.length的数组arr。对于满足nums[j]==nums[i]且j!=i的所有j,arr[i]等于所有|i-j|之和。如果不存在这样的j,则令arr[i]等于0。返回数组arr。示例1:输入:nums=[1,3,1,1,2]输......
  • 【230409-1】记者要为5名志愿者和他们帮助的2位老人拍照,要求排成一排,2位老人相邻但不
    ......
  • 【 2023 】近期一些编译调试开发 Android7&9 系统的笔记( h616 / imx8m / rk3399 )
    主要就记录一下自己食用过程中遇到的一些问题吧,板子有新有旧,但都差不多。待整理呢。https://stackoverflow.com/questions/67363030/rebuild-android-code-with-error-ssl-error-when-connecting-to-the-jack-server-thttps://note.qidong.name/2017/07/disable-jack-server/......
  • 今日报告-48
    今日打卡所花时间(包括上课):2.1h代码量(行):50发表博客:1篇(不包括本篇)学习进度和了解到的知识点:今天完善了一下系统的方案思路,希望能够优化一下界面。学习了一些Bookstrap的相关知识.......
  • vue-router
    ###################npminstallvue-router       Vue.use()方法的源代码如下:functioninstall(Vue){//避免重复安装插件if(install.installed&&_Vue===Vue)returninstall.installed=true_Vue=Vue//执行插件的安装方法const......
  • windows 配置 oh-my-zsh
    电脑一天都对着命令行,同事让我把界面换一下不然太枯燥了,公司的破电脑限制了powershell的使用(真的拉胯),之前在公司电脑上用picgo也用不了orz问了一下群友都说oh-my-zsh好,折腾一下自己的拯救者安装开启WSL的许可使用管理员身份运行powershell输入Enable-WindowsOptionalFea......
  • 结对编程-----四则运算
    本次结对编程我与2152710一起进行了四则运算的编程。这次采用python作为编程语音。小学生四则运算:两次运算,100 以内的数字,确保答案在 0..100 之间。以下是代码展示importrandomforiinrange(100):  a=random.randint(1,100)  b=random.randint(1,100......
  • 50 openEuler搭建PostgreSQL数据库服务器-配置环境
    50openEuler搭建PostgreSQL数据库服务器-配置环境说明:以下环境配置仅为参考示例,具体配置视实际需求做配置50.1关闭防火墙并取消开机自启动说明:测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。在root权限下停止防火墙。#systemctlstopfire......
  • git stash|4-6
    应用场景1当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用gitstash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。2由于疏忽,本......
  • 小程序自定义组件 - 组件通信父传子
    页面组件化后,随即就面临组件间的通信问题,就组件间如何传递数据的问题.在vue中,总结下来就是父组件通过prop属性给子组件传简单的值,通过slot给子组件传dom等复杂数据;反之,子组件可通过$emit向父组件发射事件,然后在父组件中处理逻辑,达到子传父的效果.在小......