算法系列之幂运算

算法系列之幂运算本题来自 Leetcode 题目力扣难度 中等编程语言 Go1 背景看了不少其他人提交的答案 发现 Golang 的答案特别少 且很多都存在同一个问题 精度

大家好,欢迎来到IT知识分享网。

本题来自Leetcode

题目力扣

难度:中等

编程语言:Go

1. 背景

看了不少其他人提交的答案,发现Golang的答案特别少,且很多都存在同一个问题:精度。

Go的浮点数精度范围有限,对于超过精度的返回值会不准确,但貌似很多人并没有意识到这个问题,或者说不知道怎么处理于是略过了这个问题。

本文会按照:题目介绍-> 解题思路分析 -> 源码展示的方式,来完成这一作业。

2. 题目介绍

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数

算法系列之幂运算

样例:

算法系列之幂运算

提示:

  1. -100.0 < x < 100.0
  2. -2^{31} <= n <= 2^{31}-1
  3. -10^4 <= x^n <= 10^4

3. 解析思路

简单方法,直接调用内置math函数库。 重复造轮子方法:按照快速降幂的思路,将n折半,计算因子扩大为2次幂。n折半后是奇数,则需要单独✖️计算因子。

所谓降幂,其实就是利用了幂函数的运算法则:

算法系列之幂运算

来减少需要运算的次数。尤其是在幂n比较大时,具备良好的性能优势。

4. 源码展示

公用方法,保留结果的8位精度。

func roundFloat(r float64) float64 {

return float64(int(r*)) / 10 /

}

简单方法实现

func myPowSimple(x float64, n int) float64 {

return roundFloat(math.Pow(x, float64(n)))

}

快速降幂:

算法系列之幂运算

Leetcode运算结果 : 两种方法均得到以下数据:

执行用时: 0ms

内存消耗: 1.9 MB

生活依然要继续,每天拿出半个小时,放下焦虑,用行动来积累更好的自己,我们一起加油!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/171898.html

(0)
上一篇 2025-02-27 07:00
下一篇 2025-02-27 07:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信