LeetCode ! 50. Pow(x, n)

这篇具有很好参考价值的文章主要介绍了LeetCode ! 50. Pow(x, n)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考资料:左程云算法课 , 《程序员代码面试指南》

50. Pow(x, n)
Implement pow(x, n), which calculates x raised to the power n (i.e., xn).

 

Example 1:

Input: x = 2.00000, n = 10
Output: 1024.00000
Example 2:

Input: x = 2.10000, n = 3
Output: 9.26100

思路:
以求 1 0 75 10^{75} 1075为例, 75 = 64 + 8 + 2 + 1 = ( 1001011 ) 2 75 = 64+8+2+1=(1001011)_2 75=64+8+2+1=(1001011)2
so, 1 0 75 = 1 0 64 × 1 ⋅ 1 0 32 × 0 ⋅ 1 0 16 × 0 ⋅ 1 0 8 × 1 ⋅ 1 0 4 × 0 ⋅ 1 0 2 × 1 ⋅ 1 0 1 × 1 = 1 0 ( 1001011 ) 2 10^{75}=10^{64\times1}·10^{32\times0}·10^{16\times0}·10^{8\times1}·10^{4\times0}·10^{2\times1}·10^{1\times1}=10^{ (1001011)_2} 1075=1064×11032×01016×0108×1104×0102×1101×1=10(1001011)2
we assume that base=10, res=1.
二进制表示的最低位(最右边的那一位)是1, 那么
r e s = r e s × b a s e = 10 , b a s e = b a s e × b a s e = 1 0 2 res = res \times base = 10, base = base\times base=10^2 res=res×base=10,base=base×base=102
二进制表示的倒数第二位是0,那么
r e s = r e s = 10 , b a s e = b a s e × b a s e = 1 0 4 res = res = 10, base = base\times base=10^4 res=res=10,base=base×base=104
and so on. we can get the ans, which is the final 'res`.

注:整数的幂可以扩展到矩阵的幂, 把res的起点设置为单位矩阵即可。矩阵幂的应用见斐波那契数列相关问题(详细可查阅《程序员代码面试指南》)。
注2: 这道题要考虑到幂可能取负数。对于普通负数,我们也可以直接取相反数,计算得结果后再取倒数即可;特别要注意的是,幂可能取到 系统最小值, 这时直接取相反数还是 系统最小指 它自身,于是需要特别处理,大致思路是
x M I N = x M I N + 1 / x x^{MIN} = x^{MIN+1}/x xMIN=xMIN+1/x,而 x M I N + 1 x^{MIN+1} xMIN+1是一种普通情况可以调用当前这个函数解决。
详细见代码。文章来源地址https://www.toymoban.com/news/detail-480056.html

public double myPow(double x, int n){

           if(x==0||x==1){return x;}
           if(n==0){return 1;}
            // there exists one case "x=2.00000, n=-2147483648"
            if(n==Integer.MIN_VALUE)
            {
                if(x>1 || x<-1){return 0;}
                return myPow(x,n+1)/x;
            }

            boolean isPos = true;
            if(n<0)
            {
                isPos=false;
                n =-n;
            }
             
            double base=x;
            double res = 1;
            for(;n!=0;n>>=1)
            {
                if((n&1)==1)
                {
                    res*=base;
                }

                base = base*base;
            }

        return isPos?res:1/res;
       }

到了这里,关于LeetCode ! 50. Pow(x, n)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 资料与参考

    资料: 本书(《Python神经网络编程》)的资料是使用Jupyter notebooks写的,本人并不擅长使用Jupyter,所以用传统py重写了一遍,并附加了新功能(即多数字识别),现将Jupyter版和py版连带本书pdf一并上传至gitee,地址:python-neuralNetwork-coding: 《Python神经网络编程》pdf和随书源码,

    2024年02月11日
    浏览(58)
  • 算法leetcode|50. Pow(x, n)(rust重拳出击)

    实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即, x n )。 解释: 2 -2 = 1/2 2 = 1/4 = 0.25 -100.0 x 100.0 -2 31 = n = 2 31 -1 n 是一个整数 -10 4 = x n = 10 4 面对这道算法题目,二当家的再次陷入了沉思。 直接想到的就是模拟, x 循环 n - 1 次乘以 x ,时间可以抹平一切,但是会非常慢。 还

    2024年02月05日
    浏览(40)
  • Fast Planner——代码解读参考资料整理

    参数解读 主要函数解读 概率栅格地图,概率更新过程的公式推导过程 全概率公式、贝叶斯公式 一. kinodynamic a_star(前端hybrid A_star动力学路径搜索) 1.1启发函数的计算 1.2 Compute shot Traj 1.3 节点扩张 1.4 节点剪枝 1.5 返回kinopath与 getsamples 二、B样条曲线设置 2.1 均匀B样条设置

    2024年02月05日
    浏览(88)
  • [渝粤教育] 中国人民警察大学 工业企业防火 参考 资料

    教育 -工业企业防火-章节资料考试资料-中国人民警察大学【】 随堂测验 1、【判断题】工业企业的火灾特点是涉及行业种类繁多,涉及到社会生活的方方面面。 A、正确 B、错误 参考资料【 】 2、【判断题】工业企业的火灾特点是物资集中,存在各种形式的点火源,发生火灾

    2024年02月02日
    浏览(56)
  • [渝粤教育] 辽宁对外经贸学院 数字新技术 参考 资料

    教育 -数字新技术-4-章节资料考试资料-辽宁对外经贸学院【】 第一单元测验 1、【单选题】1. 云计算是对(D)技术的发展与运用 云计算是对( )技术的发展与运用。 A、并行计算 B、网格计算 C、分布式计算 D、三个选项都是 参考资料【 】 2、【单选题】从研究现状上看,下

    2023年04月25日
    浏览(77)
  • 【Python NLTK】零基础也能轻松掌握的学习路线与参考资料

    Python 自然语言处理工具包(Natural Language Toolkit,简称 NLTK)是一款 Python 的库,主要用于处理自然语言的相关问题,如文本清洗、标记化、分词、语义分析、词性标注、文本分类等功能,是数据科学家和机器学习工程师不可或缺的工具之一。 本文将介绍学习 Python NLTK 的路线,

    2024年02月07日
    浏览(59)
  • 【Python psycopg2】零基础也能轻松掌握的学习路线与参考资料

    Python psycopg2是一个Python库,在Python中提供了一个连接PostgreSQL数据库的接口。它可以让Python应用程序和PostgreSQL数据库之间进行通信和数据传输。学习Python psycopg2的路线和教程可以在查阅资料和实践中快速入门。 一、学习前置知识 学习Python psycopg2需要一定的前置知识,如Pytho

    2024年02月05日
    浏览(47)
  • 【Python Cookie 和代理 IP】零基础也能轻松掌握的学习路线与参考资料

    一、Python Cookie 1、什么是Cookie? Cookie是一种在客户端保存数据的机制,服务器通过在HTTP响应头中添加Set-Cookie头实现。浏览器在接收到响应头中的Set-Cookie后,会将这个Cookie保存在本地。之后每次请求都会将本地保存的Cookie自动添加到请求头中,发送给服务器。 2、为什么需要

    2024年02月05日
    浏览(47)
  • 基于JAVA高校校园学习资料共享系统 设计与实现(springboot框架) 参考文献

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月19日
    浏览(45)
  • 基于python影视电影点评系统设计与实现:开题报告、成品参考、毕设辅导资料

     博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包