最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

算法:數(shù)值的整數(shù)次方

2022-07-02 01:30 作者:做架構(gòu)師不做框架師  | 我要投稿


實現(xiàn) pow(x, n) ,即計算 x 的 n 次冪函數(shù)(即,xn)。不得使用庫函數(shù),同時不需要考慮大數(shù)問題。

示例

  • 輸入:x = 2.00000, n = 10

  • 輸出:1024.00000

提示

  • -100.0 < x < 100.0

  • -2的31次方 <= n <= 2的31次方 -1

  • -10的4次方 <= x的n次方 <= 10的4方

方法一:快速冪 + 遞歸

「快速冪算法」的本質(zhì)是分治算法。

以示例為例,從 2 開始,每次直接把上一次的結(jié)果進(jìn)行平方,計算3次就可以得到2的10次方值,我們可以按照:

  • x → x的2次方 → x的5次方 → x的10次方的順序。

直接從左到右進(jìn)行推導(dǎo)看上去很困難,因為在每一步中,我們不知道在將上一次的結(jié)果平方之后,還需不需要額外乘 x。但如果我們從右往左看,分治的思想就十分明顯了。

代碼如下:

復(fù)雜度分析

  • 時間復(fù)雜度:O(logn),即為遞歸的層數(shù)(由于每次遞歸都會使得指數(shù)減少一半)。

  • 空間復(fù)雜度:O(logn),即為遞歸的層數(shù)。這是由于遞歸的函數(shù)調(diào)用會使用棧空間。

方法二:快速冪 + 迭代

由于遞歸需要使用額外的??臻g,我們試著將遞歸轉(zhuǎn)寫為迭代。

我們以 x 的77次方 作為例子:

  • x → x的2次方 → x的4次方→ x的9次方 → x的19次方 → x的38次方 → x的77次方;

可以發(fā)現(xiàn):

  • x的38次方 到 x的77次方 中額外乘的 x 在 x的77次方 中貢獻(xiàn)了 x;

  • x的9次方 到 x的19次方 中額外乘的 x 在 之后被平方了 2 次,因此在 x的77次方 中貢獻(xiàn)了 x的4次方;

  • x的4次方 到 x的9次方 中額外乘的 x 在之后被平方了 3 次, 因此在 x的77次方 中貢獻(xiàn)了 x的8次方;

  • 最初的 x 在之后被平方了 6 次,因此在 x的77次方 中貢獻(xiàn)了 x的64次方。

我們把這些貢獻(xiàn)相乘,x * x的4次方 * x的8次方 * x的64次方 恰好等于 x的77次方。而這些貢獻(xiàn)的指數(shù)部分又是什么呢?它們都是 2 的冪次,這是因為每個額外乘的 x 在之后都會被平方若干次。而這些指數(shù) 1,4,8 和 64,恰好就對應(yīng)了 77 的二進(jìn)制表示 (1001101)2 中的每個 1!

這樣以來,我們從 x 開始不斷地進(jìn)行平方,如果 n 的第 k 個(從右往左,從 0 開始計數(shù))二進(jìn)制位為 1,那么我們就將對應(yīng)的貢獻(xiàn)

x的(2的k次方)次方 計入答案。

代碼如下:

復(fù)雜度分析

  • 時間復(fù)雜度:O(logn),即為對 n 進(jìn)行二進(jìn)制拆分的時間復(fù)雜度。

  • 空間復(fù)雜度:O(1)。

END

本文內(nèi)容出處是力扣官網(wǎng),希望和大家一起刷算法,在后面的路上不變禿但是變強(qiáng)!

好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。


算法:數(shù)值的整數(shù)次方的評論 (共 條)

分享到微博請遵守國家法律
吴旗县| 社旗县| 二手房| 牙克石市| 临城县| 佳木斯市| 叶城县| 怀远县| 林西县| 铜陵市| 元朗区| 科技| 铜山县| 陈巴尔虎旗| 长白| 宝应县| 鹤壁市| 铜鼓县| 漳平市| 西盟| 西峡县| 肃宁县| 开封县| 旅游| 高邮市| 沙河市| 丹东市| 上饶县| 柯坪县| 新化县| 蒙阴县| 海淀区| 湖北省| 宜良县| 河源市| 扎赉特旗| 营口市| 本溪| 兴城市| 酉阳| 安乡县|