605. Sequence Reconstruction

2019-05-30  本文已影响0人  鸭蛋蛋_8441

Description

Check whether the original sequence org can be uniquely reconstructed from the sequences in seqs. The org sequence is a permutation of the integers from 1 to n, with 1 ≤ n ≤ 10^4. Reconstruction means building a shortest common supersequence of the sequences in seqs (i.e., a shortest sequence so that all sequences in seqs are subsequences of it). Determine whether there is only one sequence that can be reconstructed from seqs and it is the org sequence.

Example

Example 1:

Input:org = [1,2,3], seqs = [[1,2],[1,3]]

Output: false

Explanation:

[1,2,3] is not the only one sequence that can be reconstructed, because [1,3,2] is also a valid sequence that can be reconstructed.

Example 2:

Input: org = [1,2,3], seqs = [[1,2]]

Output: false

Explanation:

The reconstructed sequence can only be [1,2].

Example 3:

Input: org = [1,2,3], seqs = [[1,2],[1,3],[2,3]]

Output: true

Explanation:

The sequences [1,2], [1,3], and [2,3] can uniquely reconstruct the original sequence [1,2,3].

Example 4:

Input:org = [4,1,5,2,6,3], seqs = [[5,2,6,3],[4,1,5,2]]

Output:true

思路:

刚开始看题可能比较糊涂,最后会发现实际上是判断org是否是seqs的唯一拓扑排序, 就转换成BFS求拓扑排序的问题, 难点就是如何构件图及获得每个点的入度, 这个题先得到了每个点后续的点,并且用set排除了重复的可能, 然后根据这个信息去计算入度。

还要注意是否存在唯一拓扑序的条件是队列中是否永远只有一个点,即不存在分叉。

还有结构化的编程会让代码可读性增强。

代码:

上一篇 下一篇

猜你喜欢

热点阅读