Re: [閒聊] 每日LeetCode

看板Marginalman作者 (動物園 公告)時間2年前 (2023/11/07 19:47), 2年前編輯推噓2(202)
留言4則, 3人參與, 2年前最新討論串497/719 (看更多)
※ 引述《oin1104 (是oin的說)》之銘言: : 原本想自己先試試看 : 直接暴力拆開來解 : 結果runtime error 你做的大概是對的 不過問題就在演算法 這也是你以後才會學到的 這邊我們先做一些簡化 大概理解一下演算法在幹什麼就好 我們假定你的每一行程式它要花的時間就是1 那下面這個 for(int i = 0; i < 10; i++) { myVar++; myVar--; } 我們就能知道它做了10次myVar++以及10次myVar-- 然後可能還有給for用的i = 0, i++以及i < 10 這樣就是花了20(myVar) + 21(for) = 41的時間 演算法的目的就是去推算你的程式花了多少時間、以及多少空間(記憶體) 在我們要處裡的資料很大的時候 例如一萬筆 或是一億筆 那那些基本的操作影響就會變得很小 例如int i = 0 演算法中對程式造成大量影響就是你的迴圈怎麼用 你原本的算法長這樣 for(distSize) while(1) { for(distSize) for(distSize) for(distSize) } 這個時間複雜就是10^5 + 10^5 * (10^5*3) 造成最大的影響就是10^5*10^5 後來換成新的 for(distSize) while(1) 時間複雜度是10^5*2 二十萬跟三百億比起來就差很多 這就是你超時的主要原因 從上面的算式比下來 我們就能知道 演算法中單行程式我們都會無視 然後倍數的差距其實也是很小的 (跑一次迴圈十萬跟跑兩次迴圈二十萬比) 會影響最大的是你用了幾層巢狀迴圈 (單迴圈十萬跟跟巢狀迴圈一百億) 所以能避免巢狀迴圈就盡量避免 當然比巢狀迴圈更可怕的就別說了 當然上面說的演算法程式都是不包含IO的 如果你要撈資料庫、撈後端資料、讀檔案之類的一行就有大量消耗 -- Zoosewu Yoututbe顯示PTT推文 可以在各個網站追實況或Live時使用 預覽圖: https://i.imgur.com/ZhtXdAJ.png
https://i.imgur.com/WqbLNV3.png
完整介紹: https://github.com/zoosewu/PTTChatOnYoutube/tree/master/homepage 支援的網站: Youtube Twitch Holotools Niji-mado Holodex -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.229.33 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1699357670.A.0F7.html

11/07 19:49, 2年前 , 1F
大師
11/07 19:49, 1F
我的解題思路也會順便丟在leetcode 因為525害我們文章都會被吃掉 https://leetcode.com/Zoosewu/ 登入之後點Solutions應該看的到(吧?) 然後會順便把複雜度放上去 ※ 編輯: ZooseWu (114.32.229.33 臺灣), 11/07/2023 19:54:24

11/07 19:57, 2年前 , 2F
又上了一課 感謝大師
11/07 19:57, 2F

11/07 20:01, 2年前 , 3F
solution 好像沒 recent ac有原本程式碼
11/07 20:01, 3F

11/07 20:14, 2年前 , 4F
大師
11/07 20:14, 4F
文章代碼(AID): #1bIYFc3t (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1bIYFc3t (Marginalman)