Leetcode第五十題 Pow x, n

2021-10-08 18:20:07 字數 1034 閱讀 9804

題目:

實現 pow(x, n) ,即計算 x 的 n 次冪函式。

示例 1:

輸入: 2.00000, 10

輸出: 1024.00000

示例 2:

輸入: 2.10000, 3

輸出: 9.26100

示例 3:

輸入: 2.00000, -2

輸出: 0.25000

解釋: 2-2 = 1/22 = 1/4 = 0.25

說明:-100.0 < x < 100.0

n 是 32 位有符號整數,其數值範圍是 [−231, 231 − 1] 。

個人思路:

暴力解法。。。肯定不對,那就只能不停一分為二再乘了。

官方答案推薦:

①遞迴,同個人想法,很簡單,2^8 = 16 * 16

②迭代:一般人想不出來,根據奇數多出來的x被n次平方後對結果的貢獻,設x^2^k。可發現對結果單獨做出貢獻的這些x對應於冪次的二進位制表示中1的個數,而k則對應二進位制表示中1的位置

python**:

class solution:

def mypow(self, x: float, n: int) -> float:

def calc(count):

if count == 1:

return x

mulresult = calc(count//2)

if count % 2 == 0:

return mulresult * mulresult

else:

return mulresult * mulresult * x

if n ==0:

return 1

return calc(n) if n>0 else 1/calc(-n)

反思:

迭代速度比遞迴快得多,但是真難想

《道德經》第五十章

出生入死。生之徒,十有三 死之徒,十有三 人之生,動之於 死地,亦十有三。夫何故?以其生之厚。蓋聞善攝生者,路行不遇兕虎,入軍不被 甲兵 兕無所投其角,虎無所用其爪,兵無所容其刃。夫何故?以其 無死地。易解 出離維生之道就入於速死之途。人世間,屬於長壽的,佔十分之三 屬於短命的,佔十分之三 因為行舉...

程式設計訓練第五十期 合併區間

以陣列 intervals 表示若干個區間的集合,其中單個區間為 intervals i starti,endi 請你合併所有重疊的區間,並返回乙個不重疊的區間陣列,該陣列需恰好覆蓋輸入中的所有區間。1.排序 雙指標 如果我們按照區間的左端點排序,那麼在排完序的列表中,可以合併的區間一定是連續的。我...

python學習第五十天shutil模組的用法

什麼shutil模組,就是對高階的檔案,資料夾,壓縮包進行處理的模組,下面簡單講述其用法。檔案和資料夾的操作 拷貝檔案內容 import shutil shutil.copyfileobj open old.xml r open new.xml w 拷貝檔案 shutil.copyfile src,...