拓扑排序
Face++面试中遇到的问题,手写一个拓扑排序函数,数据按照链式存储,即每个点链表存储出度的点。当时想出了一种解决方法,不过看了其他解法,感觉自己的方法有点复杂,不过时间复杂度都是O(n^2)。
我当时的想法:正序没法找到拓扑的前后顺序,但是反过来就迎刃而解。从结束点(出度为0)开始,入队列。然后将入度当前点的点加入队列中。这样就找到了反序的拓扑序列,然后利用栈的特点反转就得到答案了。当时面试官还和我谈论验证这个解法,但我觉得没啥问题。
阅读全文…