小李飛刀:leetcode我又來啦~

寫在前面

年前嘛,就是各類渙散的狀態。
在拖完地板以後,想一想仍是補上今天的題解吧~
感謝小佳揚推薦的題目,默默的複習了一把遞歸~算法

第一題

50. Pow(x, n)
難度:中等數據結構

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

個人解題代碼:函數

class Solution:
    def myPow(self, x, n):
        """
        :type x: float
        :type n: int
        :rtype: float
        """
        if not n:
            return 1
        if n < 0 :
            return 1 / self.myPow(x, -n)
        if n % 2:
            return x * self.myPow(x, n-1)
        return self.myPow(x*x, n/2)

參考了部分評論區的題解。
效率上仍是能夠的,複雜度在N(logn)左右。spa

clipboard.png

個人解題思路:
一開始的時候小佳揚說是坑,我還在想不就是循環麼。
後來她說要考慮怎麼下降複雜度,不然會超時,就開始認真的思考了。code

  • 由於是n次冪,若是直接循環,複雜度就是O(n)了。
  • n次冪能夠拆解爲n/2n2的方式。
  • 考慮n爲偶數和奇數的狀況,判斷餘數後進行計算便可。
  • 每次拆解n/2,最後最小的單位應該爲x*x。
  • 由於每一輪都爲前一輪的解的2次方,因此用遞歸。

總結:
遞歸仍是比較繞的,前提是要找到每一次循環的出口,不然極容易變成死循環。
立刻放假了~
統計學+算法+數據結構仍是會常伴左右的~
最近還加上了託福的單詞,由於受到了單詞量統計的刺激,我竟然如今知曉的單詞量只有3k了,要抓緊背起來了~blog

自律使我快樂~遞歸

相關文章
相關標籤/搜索