从零学算法50

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

50.实现 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文章来源地址https://www.toymoban.com/news/detail-732991.html

  • 还真没我想的那么简单,这题可以学一下快速幂,我就直接说结论了,有兴趣的可以看原文。ok 首先显而易见我们最终要求的是 xn,然后我们知道 xn = xa+b(a+b=n)=xaxb。神来之笔就来了,我们把 n 转成二进制,比如 n 为 5,我们就得到了 0101,二进制转十进制都知道吧,这个 0101 的含义就是 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20,也就是说 xn 比如 x5 我们最终可以表示成 x0101 也就是 x 的 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 次 = x8x0x4x1x2X0x1x1,你会发现这最终转换成了求 x1ax2bx4cx8d…xy的问题,所以我们最终遍历求解时只需要两个操作,不断累乘 x 使得其成为 x1x2x4…,还有就是不断获取那些 abcd 是 0 还是 1,获取也很简单,二进制数 b 的最右位为 b&1,取完以后 b>>1,就等于把第二最右位移到了最右位。
  •   public double myPow(double x, int n) {
          long b = n;
          double ans = 1.0;
          // 由于 int 范围为 -2的31次 <= n <= 2的31次-1,所以 -n 可能会超出 int 能表示最大值,就用了 long
          if(b < 0){
              b=-b;
              x=1/x;
          }
          while(b>0){
          	// 如果此时的 abcd 对应的是 1 就乘 x,否则其实就是乘以 1,所以可以跳过
              if((b&1)==1)ans*=x;
              // 累乘 x 得到下一个 x 的 y 次方(y 为 2 的 n 次)
              x*=x;
              // 等待下一位 abcd,因为 >> 相当于整除 2,所以循环结束条件就是 b > 0
              b>>=1;
          }
          return ans;
      }
    

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

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

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

相关文章

  • 算法通关村-----数字与数学基础问题

    问题描述 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 。 如果 x 是负数,返回 -1 。 如果 x 是等于 0 ,返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。 返回 signFunc(product) 。 详见leetcode1822 问题分析 最直接的方式是遍

    2024年02月09日
    浏览(34)
  • 积跬步至千里 || 数学基础、算法与编程

    BAP 技能是指基础(Basic)、算法(Algorithm)和编程(Programm)三种基本技能的深度融合。理工科以数学、算法与编程为根基,这三个相辅相成又各有区别。 (1)数学以线性代数为主要研究工具和部分微积分技术为手段,来实现优化的目标。 (2)算法是应用数学和各类数据分析方法的

    2024年02月11日
    浏览(46)
  • 【机器学习/深度学习】数学基础——矩阵求导

    A矩阵对B矩阵求导,实质是矩阵A中的每个元素对矩阵B中的每个元素进行求导。 广义上,矩阵可以认为是一个单独的标量(矩阵中只有一个元素)、一个向量(m 1矩阵或者1 n矩阵)。那么矩阵对矩阵求导实际上可以分为以下几种: 标量对向量求导 向量对标量求导 向量对向量

    2024年02月04日
    浏览(50)
  • 机器学习的数学基础(上)

    []{#_Toc405731550 .anchor} 目录 机器学习的数学基础 1 高等数学 1 线性代数 9 概率论和数理统计 19 高等数学 1.导数定义: 导数和微分的概念 f ′ ( x 0 ) = lim ⁡ Δ x → 0   f ( x 0 + Δ x ) − f ( x 0 ) Δx f\\\'(x_{0}) = lim_{Delta x rightarrow 0},frac{f(x_{0} + Delta x) - f(x_{0})}{text{Δx}} f ′ ( x 0 ​

    2023年04月26日
    浏览(41)
  • 零基础学习数学建模——(一)什么是数学建模

    本篇博客将详细介绍什么是数学建模。 ​ 本人在本科阶段获得过国赛省一、mathorcup数学建模一等奖、五一杯数学建模一等奖、华数杯数学建模一等奖、亚太杯数学建模一等奖和两次美赛一等奖。自己在数学建模这条路上摸爬滚打了几年,现在想借助博客分享自己在数学建模

    2024年01月25日
    浏览(59)
  • 线性代数 | 机器学习数学基础

    前言 线性代数 (linear algebra)是关于向量空间和线性映射的一个数学分支。它包括对线、面和子空间的研究,同时也涉及到所有的向量空间的一般性质。 本文主要介绍 机器学习 中所用到的线性代数 核心基础概念 ,供读者学习阶段查漏补缺或是 快速学习参考 。 线性代数

    2024年01月21日
    浏览(69)
  • 强化学习的数学基础:从动态规划到深度学习

    强化学习(Reinforcement Learning, RL)是一种人工智能技术,它旨在让智能体(agent)在环境(environment)中学习如何做出最佳决策,以最大化累积奖励(cumulative reward)。强化学习的核心思想是通过在环境中与智能体与环境的交互来学习,而不是通过传统的监督学习(supervised le

    2024年02月01日
    浏览(49)
  • 机器学习——支持向量机(数学基础推导篇【未完】)

    在一个周日下午,夏天的雨稀里哗啦地下着 我躺在床上,捧着ipad看支持向量机 睡了好几个觉…支持向量机太好睡了 拉格朗日乘数法太好睡了 几何函数太好睡了 在我看来,支持向量机是目前学下来,最难以理解的内容 希望日后不要太难…脑子不支持的 支持向量积的原理,

    2024年02月12日
    浏览(95)
  • 【深度学习】S2 数学基础 P6 概率论

    机器学习本质上,就是做出预测。而概率论提供了一种量化和表达不确定性水平的方法,可以帮助我们量化对某个结果的确定性程度。 在一个简单的图像分类任务中; 如果我们非常确定图像中的对象是一只猫,那么我们可以说标签为 “猫” 的概率是 1,即 P ( y = “猫” )

    2024年02月20日
    浏览(41)
  • 算法基础-数学知识-欧拉函数、快速幂、扩展欧几里德、中国剩余定理

    互质就是两个数的最大公因数只有1,体现到代码里面就是 a和b互质,则b mod a = 1 mod a (目前我不是很理解,但是可以这样理解:a和b的最大公因数是1,即1作为除数和b作为除数时,对于被除数a来说余数是一样的,即1/a的余数和b/a是一样的,即 b mod a = 1 mod a ) 欧拉函数的作用是

    2024年02月09日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包