2019年2月25日 星期一

[leetcode][C] 50. Pow(x, n)


https://leetcode.com/problems/powx-n/



顧名思義,這題是想自己實做pow(x, n)

最簡單的方法當然是直接把x 乘以n次,但這樣時間複雜度就變成O(n),

要加快速度,有一個做法就是重複利用已經乘過的數

舉例來說,pow(2,5) = 2*2*2*2*2 = (2*2)*(2*2不用重算)*2





也就是
pow(2,5) =pow(2,5/2)*pow(2,5/2)*pow(2,5%2)

這個做法可以很容易轉成遞迴

基本上用這個概念,處理掉一些特殊狀況(任何數的0次方=1, ),最後處理負數次方後,
在leetcode上面可以在4ms跑完,打敗100%其他的解法


source code:
https://github.com/cy-arduino/leetcode/blob/master/50.c

沒有留言:

張貼留言