ㄌㄐ@你的水潤餅大使
剛剛練習ㄌ N-ary Tree Postorder
不過用 iterative 的方式寫好慢,可是又看不懂那些壓低行數的人 recursive 怎麼寫ㄉ(
oToToT@(>▂<)
那啥? leetcode 590?
ㄌㄐ@你的水潤餅大使
oToToT@(>▂<) : 應該是ㄅ,我忘記題號了,不過找到是 leetcode 就對ㄌ
ㄌㄐ@你的水潤餅大使
不過我剛剛跑去解了 ZigZag string ,用比較 naive 的方法解,也是有點慢。但感覺這種鋸齒狀的題目可以寫成一個公式去解
ㄌㄐ@你的水潤餅大使
Encode and Decode TinyURL - LeetCode
這個準備工作好長,我先等等看(
ㄌㄐ@你的水潤餅大使
我想一下我怎ㄇ貼 code snip
ㄌㄐ@你的水潤餅大使
https://images.plurk.com/2Cc6sIrJoGbPDpOUGeb6Iw.png
好 Q ㄛ第一次看到這個工具
Mutex<Abby>
590:

Recursive :
優先push 最左邊沒有chilren 的val進入callstack

Iterative :
把最右邊有children 的root 優先放入答案
ㄌㄐ@你的水潤餅大使
https://images.plurk.com/2aLIURCOznEjKuQPXlPFUb.png
N-ary tree postorder
我是就很直觀地走過,然後存狀態
ㄌㄐ@你的水潤餅大使
Mutex<Abby> : 為什麼 iterative 是把最右邊有children 的root 優先放入答案
Mutex<Abby>
jennifer7108: 這樣一直push, 答案就剛好是反過來了
例如: https://images.plurk.com/1ohEsKvaRIN3BKneol22iB.png
. 1,5,10,9,13...
oToToT@(>▂<)
這個 python 好 C ww
Mutex<Abby>
jennifer7108: 你用了array, append 時會不斷變慢的, 這題利用linked list 的特性才會快

linked list prepend 時只要修改第一個pointer 就夠了, pop 時也是, 這樣就令每個存取都是O(1)了
oToToT@(>▂<)
Mutex<Abby> : 沒吧,python list 的 append 跟 pop 都是 O(1) 的,反正底下基本上就是個 dynamic array
ㄌㄐ@你的水潤餅大使
https://images.plurk.com/qtPMwdH6LnohqctvReLp2.png
我壓成這幾行ㄌ!!!
ㄌㄐ@你的水潤餅大使
oToToT@(>▂<) : 我一直改不過來wwww 要寫得像 pythoneer 是不是要寫多一點 [::-1] 之類ㄉ操作
ㄌㄐ@你的水潤餅大使
不過不知道為什麼更慢ㄌ,我想想
oToToT@(>▂<)
extend的::-1改成reversed應該會比較快ㄅ
ㄌㄐ@你的水潤餅大使
oToToT@(>▂<) : ㄛ對ㄟ,忘記
Mutex<Abby>
oToToT@(>▂<) : 喔喔真的! 我有聽過越加越慢的說法...
ㄌㄐ@你的水潤餅大使
yeah 壓到 44ms ㄌ
oToToT@(>▂<)
Mutex<Abby> : 我現在想到會變慢的部分可能是因為 O(1) 是 amortized 的,所以他的實際執行時間是偶爾會變特別長,然後越多操作之後特別長的可能會更長 (不確定 python 底下有沒有特別優化)
載入新的回覆