mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-10-12 17:05:15 +08:00
69 lines
2.4 KiB
HTML
69 lines
2.4 KiB
HTML
<p>给你一个数组 <code>target</code> 和一个整数 <code>n</code>。</p>
|
||
|
||
<p>给你一个空栈和两种操作:</p>
|
||
|
||
<ul>
|
||
<li><code>"Push"</code>:将一个整数加到栈顶。</li>
|
||
<li><code>"Pop"</code>:从栈顶删除一个整数。</li>
|
||
</ul>
|
||
|
||
<p>同时给定一个范围 <code>[1, n]</code> 中的整数流。</p>
|
||
|
||
<p>使用两个栈操作使栈中的数字(从底部到顶部)等于 <code>target</code>。你应该遵循以下规则:</p>
|
||
|
||
<ul>
|
||
<li>如果整数流不为空,从流中选取下一个整数并将其推送到栈顶。</li>
|
||
<li>如果栈不为空,弹出栈顶的整数。</li>
|
||
<li>如果,在任何时刻,栈中的元素(从底部到顶部)等于 <code>target</code>,则不要从流中读取新的整数,也不要对栈进行更多操作。</li>
|
||
</ul>
|
||
|
||
<p>请返回遵循上述规则构建 <code>target</code> 所用的操作序列。如果存在多个合法答案,返回 <strong>任一</strong> 即可。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>target = [1,3], n = 3
|
||
<strong>输出:</strong>["Push","Push","Pop","Push"]
|
||
<strong>解释:</strong>一开始栈为空。最后一个元素是栈顶。<strong>
|
||
</strong>从流中读取 1 并推入数组。s = [1]。
|
||
从流中读取 2 并推入数组。s = [1,2]。
|
||
从栈顶删除整数。s = [1]。
|
||
从流中读取 3 并推入数组。s = [1,3]。
|
||
</pre>
|
||
|
||
<p><strong>示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>target = [1,2,3], n = 3
|
||
<strong>输出:</strong>["Push","Push","Push"]
|
||
<strong>解释:</strong>一开始栈为空。最后一个元素是栈顶。
|
||
从流中读取 1 并推入数组。s = [1]。
|
||
从流中读取 2 并推入数组。s = [1,2]。
|
||
从流中读取 3 并推入数组。s = [1,2,3]。
|
||
</pre>
|
||
|
||
<p><strong>示例 3:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>target = [1,2], n = 4
|
||
<strong>输出:</strong>["Push","Push"]
|
||
<strong>解释:</strong>一开始栈为空。最后一个元素是栈顶。
|
||
从流中读取 1 并推入数组。s = [1]。
|
||
从流中读取 2 并推入数组。s = [1,2]。
|
||
由于栈(从底部到顶部)等于 target,我们停止栈操作。
|
||
从流中读取整数 3 的答案不被接受。
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= target.length <= 100</code></li>
|
||
<li><code>1 <= n <= 100</code></li>
|
||
<li><code>1 <= target[i] <= n</code></li>
|
||
<li><code>target</code> 严格递增</li>
|
||
</ul>
|