mirror of
				https://gitee.com/coder-xiaomo/leetcode-problemset
				synced 2025-11-04 03:33:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<p>给定一个长度为 <code>n</code> 的整数数组 <code>nums</code> ,其中 <code>nums</code> 是范围为 <code>[1,n]</code> 的整数的排列。还提供了一个 2D 整数数组 <code>sequences</code> ,其中 <code>sequences[i]</code> 是 <code>nums</code> 的子序列。<br />
 | 
						||
检查 <code>nums</code> 是否是唯一的最短 <strong>超序列</strong> 。最短 <strong>超序列</strong> 是 <strong>长度最短</strong> 的序列,并且所有序列 <code>sequences[i]</code> 都是它的子序列。对于给定的数组 <code>sequences</code> ,可能存在多个有效的 <strong>超序列</strong> 。</p>
 | 
						||
 | 
						||
<ul>
 | 
						||
	<li>例如,对于 <code>sequences = [[1,2],[1,3]]</code> ,有两个最短的 <strong>超序列</strong> ,<code>[1,2,3]</code> 和 <code>[1,3,2]</code> 。</li>
 | 
						||
	<li>而对于 <code>sequences = [[1,2],[1,3],[1,2,3]]</code> ,唯一可能的最短 <strong>超序列</strong> 是 <code>[1,2,3]</code> 。<code>[1,2,3,4]</code> 是可能的超序列,但不是最短的。</li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<p><em>如果 <code>nums</code> 是序列的唯一最短 <strong>超序列</strong> ,则返回 <code>true</code> ,否则返回 <code>false</code> 。</em><br />
 | 
						||
<strong>子序列</strong> 是一个可以通过从另一个序列中删除一些元素或不删除任何元素,而不改变其余元素的顺序的序列。</p>
 | 
						||
 | 
						||
<p> </p>
 | 
						||
 | 
						||
<p><strong>示例 1:</strong></p>
 | 
						||
 | 
						||
<pre>
 | 
						||
<strong>输入:</strong>nums = [1,2,3], sequences = [[1,2],[1,3]]
 | 
						||
<strong>输出:</strong>false
 | 
						||
<strong>解释:</strong>有两种可能的超序列:[1,2,3]和[1,3,2]。
 | 
						||
序列 [1,2] 是[<u><strong>1,2</strong></u>,3]和[<u><strong>1</strong></u>,3,<u><strong>2</strong></u>]的子序列。
 | 
						||
序列 [1,3] 是[<u><strong>1</strong></u>,2,<u><strong>3</strong></u>]和[<u><strong>1,3</strong></u>,2]的子序列。
 | 
						||
因为 nums 不是唯一最短的超序列,所以返回false。
 | 
						||
</pre>
 | 
						||
 | 
						||
<p><strong>示例 2:</strong></p>
 | 
						||
 | 
						||
<pre>
 | 
						||
<strong>输入:</strong>nums = [1,2,3], sequences = [[1,2]]
 | 
						||
<strong>输出:</strong>false
 | 
						||
<strong>解释:</strong>最短可能的超序列为 [1,2]。
 | 
						||
序列 [1,2] 是它的子序列:[<u><strong>1,2</strong></u>]。
 | 
						||
因为 nums 不是最短的超序列,所以返回false。
 | 
						||
</pre>
 | 
						||
 | 
						||
<p><strong>示例 3:</strong></p>
 | 
						||
 | 
						||
<pre>
 | 
						||
<strong>输入:</strong>nums = [1,2,3], sequences = [[1,2],[1,3],[2,3]]
 | 
						||
<strong>输出:</strong>true
 | 
						||
<strong>解释:</strong>最短可能的超序列为[1,2,3]。
 | 
						||
序列 [1,2] 是它的一个子序列:[<strong>1,2</strong>,3]。
 | 
						||
序列 [1,3] 是它的一个子序列:[<u><strong>1</strong></u>,2,<u><strong>3</strong></u>]。
 | 
						||
序列 [2,3] 是它的一个子序列:[1,<u><strong>2,3</strong></u>]。
 | 
						||
因为 nums 是唯一最短的超序列,所以返回true。</pre>
 | 
						||
 | 
						||
<p> </p>
 | 
						||
 | 
						||
<p><strong>提示:</strong></p>
 | 
						||
 | 
						||
<ul>
 | 
						||
	<li><code>n == nums.length</code></li>
 | 
						||
	<li><code>1 <= n <= 10<sup>4</sup></code></li>
 | 
						||
	<li><code>nums</code> 是 <code>[1, n]</code> 范围内所有整数的排列</li>
 | 
						||
	<li><code>1 <= sequences.length <= 10<sup>4</sup></code></li>
 | 
						||
	<li><code>1 <= sequences[i].length <= 10<sup>4</sup></code></li>
 | 
						||
	<li><code>1 <= sum(sequences[i].length) <= 10<sup>5</sup></code></li>
 | 
						||
	<li><code>1 <= sequences[i][j] <= n</code></li>
 | 
						||
	<li><code>sequences</code> 的所有数组都是 <strong>唯一 </strong>的</li>
 | 
						||
	<li><code>sequences[i]</code> 是 <code>nums</code> 的一个子序列</li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<p> </p>
 | 
						||
 | 
						||
<p>注意:本题与主站 444 题相同:<a href="https://leetcode-cn.com/problems/sequence-reconstruction/">https://leetcode-cn.com/problems/sequence-reconstruction/</a></p>
 |