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