經典數學應用題 Pow(x, n) 計算 x的n次方

閱讀時間約 4 分鐘
raw-image

這題的題目在這裡:

題目敘述

題目會給定兩個參數,一個是底數x,一個是次方n。要求我們計算出x^n。

要求實作myPow(self, x: float, n: int) -> float 函數的內部邏輯。

也就是說,不可以呼叫程式語言內建計算指數的library


測試範例

Example 1:

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

Example 2:

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

Example 3:

Input: x = 2.00000, n = -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25



約束條件

Constraints:

  • -100.0 < x < 100.0
  • -231 <= n <= 231-1
  • n is an integer.
  • Either x is not zero or n > 0.
  • -104 <= xn <= 104

演算法

其實這題會用到大家在中學學過的指數律來進行的速算技巧,面對高次方時,可以先將高次方除以二,算出低次方的答案再平方回去,兩者會是等價的。

(x^m ) ^ n = x ^(mn)

(x 連乘m次) 再連乘n次 = x 連乘(mn)次


同理類推

x^n = (x^2)^(n/2)

x的n次方
= x 連乘 n 次 = (x平方) 再 連乘 n/2次
= x平方的 (n/2)次方
= (x^2)^(n/2)


定義Pow(x, n) 代表x的n次方

通則有兩種情況:

n是偶數時,Pow(x, n) = Pow(x*x, n //2 )

n是奇數時,Pow(x, n) = x * Pow(x*x, n //2 ) 注意 奇數的時候,需要補乘一個x

註:

n // 2 在python的語法裡面,相當於 n 除以 2,並且無條件捨去小數部分。
例如 7 // 2 = 3

例子:

x ^ 7 = x * (x^2) ^ 3


遞迴的終止條件:

n == 1 時,代表次方為1,x^n = x^1 = x 直接返回x 即可。

n == 0 時,代表次方為0,x^n = x^0 = 1 直接返回1 即可。


程式碼

class Solution:
 def myPow(self, x: float, n: int) -> float:
  
  if n == 0:
   # Base case:
   return 1.0
  
  elif n == 1:
   # Base case:
   return x
  
  elif n < 0:
   # General case:
   # x ^ (-n) = (1/x) ^ n
   return self.myPow( 1/x, -n)
  
  
  # Recurrence of fast power
  
  if n & 1:
   return x * self.myPow( x*x, n // 2)
  else:
   return self.myPow( x*x, n // 2)



複雜度分析

時間複雜度:

O( log n ) 最多耗費O( log n ) 可以抵達終止條件。

空間複雜度:

O( log n ) 遞迴樹樹高 = 遞迴堆疊深度最深為O( log n )

可由遞迴關係 T( n ) = T( n / 2 ) + O( 1 ) 再經由Master Theorem 或者數學歸納法得到解答。


關鍵知識點

想到高次方可以藉由指數律來降階,從n次方降到1次方,做x^n的快速計算,比傳統O( n ) 逐項相乘的算法會快上許多。

在演算法實作上,背後對應到的框架就是DFS 和 Divide and Conquer分而治之法。


Reference:

[1] Python/JS/Go/C++ O( log n) by fast power. 85%+ [w/ Comment ] - Pow(x, n) - LeetCode

avatar-img
88會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
1. 競賽題 或者 面試題 Medium Hard 以上題目,一開始在第一時間想不出解題思路,或者最佳解是很平常的事情。 通過官方解答、討論區的高手分享解題,進而學到新的解題思路,或者更泛用的演算法框架,就是最大的收穫。 2. 但是Easy分類的題目,通常就是該領域最基礎的題目,應該要
題目會給定我們一個陣列,要求我們找出裡面出現次數最多的數字。 出現次數最多的數字也就是我們在統計上所謂的 眾數 mode
題目會給一個輸入陣列,裡面的數字分別代表每個index對應到的高度,要求我們計算山峰與低谷的數目,總共有多少個。 山峰 Hill: 比最靠近高度不相同的兩個鄰居的高度還要高。 低谷 Valley:比最靠近高度不相同的兩個鄰居的高度還要低。
題目會給一個輸入陣列,要求我們判斷所有的數字是否構成一組單調數列。 也就是全部的數字構成一條單調遞增數列(逐漸變大), 或者一條單調遞減數列(逐漸變小)?
題目會給我們一個陣列,分別代表高低各不同的隔板高度,問我們從降雨之後,最多可以儲存多少水量?
雖然表面是一道移除元素的題目,但實際上考的還是搬移。 題目要求的是把val目標值移除,等價於 把非目標值的搬到前面,並且回傳這些剩下來的元素個數(也就是 陣列裡面,非目標值的元素總數​)。 請看下方範例,會更好理解。
1. 競賽題 或者 面試題 Medium Hard 以上題目,一開始在第一時間想不出解題思路,或者最佳解是很平常的事情。 通過官方解答、討論區的高手分享解題,進而學到新的解題思路,或者更泛用的演算法框架,就是最大的收穫。 2. 但是Easy分類的題目,通常就是該領域最基礎的題目,應該要
題目會給定我們一個陣列,要求我們找出裡面出現次數最多的數字。 出現次數最多的數字也就是我們在統計上所謂的 眾數 mode
題目會給一個輸入陣列,裡面的數字分別代表每個index對應到的高度,要求我們計算山峰與低谷的數目,總共有多少個。 山峰 Hill: 比最靠近高度不相同的兩個鄰居的高度還要高。 低谷 Valley:比最靠近高度不相同的兩個鄰居的高度還要低。
題目會給一個輸入陣列,要求我們判斷所有的數字是否構成一組單調數列。 也就是全部的數字構成一條單調遞增數列(逐漸變大), 或者一條單調遞減數列(逐漸變小)?
題目會給我們一個陣列,分別代表高低各不同的隔板高度,問我們從降雨之後,最多可以儲存多少水量?
雖然表面是一道移除元素的題目,但實際上考的還是搬移。 題目要求的是把val目標值移除,等價於 把非目標值的搬到前面,並且回傳這些剩下來的元素個數(也就是 陣列裡面,非目標值的元素總數​)。 請看下方範例,會更好理解。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
今天帶你們去一個充滿異國風情的打卡地點——淡水的真理大學巫登益美術館!如果你還在煩惱炎炎夏日不知道要去哪裡玩?懶得去太遠的地方,也許淡水會是一個完美的假日去處。在這個風光明媚的小鎮上,除了眾所皆知的淡水老街和漁人碼頭之外,真理大學巫登益美術館也是一個絕對不能錯過的打卡景點。走 !跟著我一起去真理
Thumbnail
在台南市安南區尋找優質的幼兒教育時,【達文西幼兒園】是一個值得考慮的選擇。這所幼兒園擁有廣闊的佔地和優美的景觀設計,為孩子們提供了良好的成長環境。 首先,達文西幼兒園的佔地非常大,周圍環繞著廣大的綠地和茂盛的樹木,這樣的環境不僅能讓孩子們接觸自然,更能在美麗的景色中自由探索和學習。這種宛如渡假勝地
Thumbnail
​文華東方酒店座落於台北市繁華商業中心與人文薈萃的敦化北路。壯麗的外觀建築充滿歐式風格,豪華精緻的設計,是台北市最著名地標之一。就在這麼一個繁華薈萃飯店內就有這麼一個藝術品國際交流的曜畫廊。 曜畫廊相關資訊:: 地址: ​台北市松山區敦化北路166號(文華精品3樓) 營業時間: ​AM11
Thumbnail
亞洲大學成立20多年,偶爾會去走走。東海、中興兩校都有景觀設計系所,中興園藝系更是聞名遐邇。亞洲大學以建築之美後來居上。 若論校園美景, 我覺得中部地區東海、中興、亞洲三校最有可觀,很值得唱名推薦。
Thumbnail
題目會給定兩個參數,一個是底數x,一個是次方n。要求我們計算出x^n。 要求實作myPow(self, x: float, n: int) -> float 函數的內部邏輯。 也就是說,不可以呼叫程式語言內建計算指數的library
Thumbnail
這兩星期幾乎沒有寫,主要是因為有很多事情要做,投資方面有研究債券市場跟開發新的策略(因為最近短線做的實在不是很好),其他方面有FRC比賽,學校暑輔的一堆破事之類的,反正超級忙,今天在FRC空出一些時間趕快寫一下吧!
Thumbnail
我是一個數位生產力工具的狂熱者,使用數位工具已經超過 10 年了。這篇文章我要不藏私地跟你分享 30 個我使用的數位工具,能幫助你大幅提升學習、寫作、經營個人品牌的工作效率。
Thumbnail
每一個階段,我都會為自己設立目標,這個目標不用太多或太遠大, 而是自己那個階段最渴望、最重要的一個就可以。 這邊分享我的目標、和這兩年的收穫。 也分享我所看到的東洋美術學校優缺點。
Thumbnail
網路上有很多心靈雞湯文,標題是「一生一定要做的事」,有很多各式各樣的答案,像是「高空彈跳、談一場不結婚的戀愛、擁有一台特斯拉」,但小編認為「有一個自己的品牌」和「有一間自己的房子」,真的應該是我們可以努力的方向,因為透過財富、透過錢這樣工具,不論你想做什麼都不會有壓力對嗎?
Thumbnail
01.《藝術的法則:文學場域的生成與結構》 02.《眼與心:身體現象學大師梅洛龐蒂的最後書寫》 03.《蒙太奇的微笑:城市影像/空間/跨領域》 04.《帝國的眼睛:林惺嶽藝術評論及學術文集》 05.《人造地獄:參與式藝術與觀看者政治學》 【藝術史到當代評論】 ​
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
今天帶你們去一個充滿異國風情的打卡地點——淡水的真理大學巫登益美術館!如果你還在煩惱炎炎夏日不知道要去哪裡玩?懶得去太遠的地方,也許淡水會是一個完美的假日去處。在這個風光明媚的小鎮上,除了眾所皆知的淡水老街和漁人碼頭之外,真理大學巫登益美術館也是一個絕對不能錯過的打卡景點。走 !跟著我一起去真理
Thumbnail
在台南市安南區尋找優質的幼兒教育時,【達文西幼兒園】是一個值得考慮的選擇。這所幼兒園擁有廣闊的佔地和優美的景觀設計,為孩子們提供了良好的成長環境。 首先,達文西幼兒園的佔地非常大,周圍環繞著廣大的綠地和茂盛的樹木,這樣的環境不僅能讓孩子們接觸自然,更能在美麗的景色中自由探索和學習。這種宛如渡假勝地
Thumbnail
​文華東方酒店座落於台北市繁華商業中心與人文薈萃的敦化北路。壯麗的外觀建築充滿歐式風格,豪華精緻的設計,是台北市最著名地標之一。就在這麼一個繁華薈萃飯店內就有這麼一個藝術品國際交流的曜畫廊。 曜畫廊相關資訊:: 地址: ​台北市松山區敦化北路166號(文華精品3樓) 營業時間: ​AM11
Thumbnail
亞洲大學成立20多年,偶爾會去走走。東海、中興兩校都有景觀設計系所,中興園藝系更是聞名遐邇。亞洲大學以建築之美後來居上。 若論校園美景, 我覺得中部地區東海、中興、亞洲三校最有可觀,很值得唱名推薦。
Thumbnail
題目會給定兩個參數,一個是底數x,一個是次方n。要求我們計算出x^n。 要求實作myPow(self, x: float, n: int) -> float 函數的內部邏輯。 也就是說,不可以呼叫程式語言內建計算指數的library
Thumbnail
這兩星期幾乎沒有寫,主要是因為有很多事情要做,投資方面有研究債券市場跟開發新的策略(因為最近短線做的實在不是很好),其他方面有FRC比賽,學校暑輔的一堆破事之類的,反正超級忙,今天在FRC空出一些時間趕快寫一下吧!
Thumbnail
我是一個數位生產力工具的狂熱者,使用數位工具已經超過 10 年了。這篇文章我要不藏私地跟你分享 30 個我使用的數位工具,能幫助你大幅提升學習、寫作、經營個人品牌的工作效率。
Thumbnail
每一個階段,我都會為自己設立目標,這個目標不用太多或太遠大, 而是自己那個階段最渴望、最重要的一個就可以。 這邊分享我的目標、和這兩年的收穫。 也分享我所看到的東洋美術學校優缺點。
Thumbnail
網路上有很多心靈雞湯文,標題是「一生一定要做的事」,有很多各式各樣的答案,像是「高空彈跳、談一場不結婚的戀愛、擁有一台特斯拉」,但小編認為「有一個自己的品牌」和「有一間自己的房子」,真的應該是我們可以努力的方向,因為透過財富、透過錢這樣工具,不論你想做什麼都不會有壓力對嗎?
Thumbnail
01.《藝術的法則:文學場域的生成與結構》 02.《眼與心:身體現象學大師梅洛龐蒂的最後書寫》 03.《蒙太奇的微笑:城市影像/空間/跨領域》 04.《帝國的眼睛:林惺嶽藝術評論及學術文集》 05.《人造地獄:參與式藝術與觀看者政治學》 【藝術史到當代評論】 ​