Explain how you would solve a LeetCode-style graph traversal problem that involves topological sorting.
Implement find_order(num_courses, prerequisites), where each pair [course, prerequisite] is a directed edge. Return an ordering containing every course, or [] if dependencies contain a cycle.
Example: find_order(2, [[1, 0]]) returns [0, 1]; find_order(2, [[1, 0], [0, 1]]) returns []. Constraints: 1 <= num_courses <= 10^4, 0 <= len(prerequisites) <= 5 * 10^4.
def find_order(num_courses, prerequisites):