Re: [閒聊] 每日LeetCode

作者: heterologic (仿生邊緣人會夢見VTber嗎)   2023-07-14 01:52:00
207. Course Schedule
這題就是標準的拓樸排序
但就這樣乖乖照著寫有點無聊
所以我們來利用 C++ 的 shared_ptr
因為 shared_ptr 只要沒有人指向他就會自己消滅
所以我們只要維護 adj, 其中
adj[a] = {Pointers[b], Pointers[c]}
代表要修 b c 之前必須修過 a, 也就是存在邊 [b, a], [c, a]
這樣沒有先修課 a 的就不會有人指向他
就會去呼叫 destructor
此時我們只要在 destructor 裡把 adj[a] 清空
如果有人因此變得沒人指向他的話就會接著呼叫他的 destructor
可以說跟這題完美契合
事情都讓 shared_ptr 做完了
最後只要算一下呼叫了幾次 destructor 就好
:)
作者: dannyko (dannyko)   2023-07-14 01:59:00
大師
作者: Rushia (みけねこ的鼻屎)   2023-07-14 09:13:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com