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
沒有留言:
張貼留言