1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-13 11:21:42 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee

批量更新数据

This commit is contained in:
2025-01-09 20:29:41 +08:00
parent 04ecea043d
commit 48cdd06c2b
5053 changed files with 156164 additions and 135322 deletions

View File

@@ -1,36 +1,47 @@
<p>给你一个下标从 <strong>0</strong>&nbsp;开始的字符串数组&nbsp;<code>words</code>&nbsp;,其中&nbsp;<code>words[i]</code>&nbsp;要么是一个字符串形式的正整数,要么是字符串&nbsp;<code>"prev"</code>&nbsp;</p>
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;,其中&nbsp;<code>nums[i]</code>&nbsp;要么是一个正整数,要么是&nbsp;<code>-1</code>&nbsp;我们需要为每个 <code>-1</code> 找到相应的正整数,我们称之为最后访问的整数。</p>
<p>我们从数组的开头开始遍历,对于 <code>words</code>&nbsp;中的每个&nbsp;<code>"prev"</code>&nbsp;字符串,找到 <code>words</code>&nbsp;中的 <strong>上一个遍历的整数</strong>&nbsp;,定义如下:</p>
<p>为了达到这个目标,定义两个空数组:<code>seen</code>&nbsp;&nbsp;<code>ans</code></p>
<p>从数组&nbsp;<code>nums</code>&nbsp;的头部开始遍历。</p>
<ul>
<li><code>k</code>&nbsp;表示到当前位置为止的连续&nbsp;<code>"prev"</code>&nbsp;字符串数目(包含当前字符串),令下标从&nbsp;<strong>0</strong>&nbsp;开始的&nbsp;<strong>整数</strong> 数组&nbsp;<code>nums</code>&nbsp;表示目前为止遍历过的所有整数,同时用&nbsp;<code>nums_reverse</code>&nbsp;表示&nbsp;<code>nums</code>&nbsp;反转得到的数组,那么当前 <code>"prev"</code>&nbsp;对应的 <strong>上一个遍历的整数</strong>&nbsp;&nbsp;<code>nums_reverse</code>&nbsp;数组中下标为 <code>(k - 1)</code>&nbsp;的整数</li>
<li>如果&nbsp;<code>k</code>&nbsp;比目前为止遍历过的整数数目 <strong>更多</strong>&nbsp;,那么上一个遍历的整数为&nbsp;<code>-1</code>&nbsp;</li>
<li>如果遇到正整数,把它添加到&nbsp;<code>seen</code>&nbsp;&nbsp;<strong>头部</strong></li>
<li>如果遇到 <code>-1</code>,则设 <code>k</code> 是到目前为止看到的 <strong>连续</strong> <code>-1</code> 的数目(包括当前 <code>-1</code>)
<ul>
<li>如果&nbsp;<code>k</code>&nbsp;小于等于&nbsp;<code>seen</code>&nbsp;的长度,把&nbsp;<code>seen</code>&nbsp;的第&nbsp;<code>k</code>&nbsp;个元素添加到&nbsp;<code>ans</code></li>
<li>如果&nbsp;<code>k</code>&nbsp;严格大于&nbsp;<code>seen</code>&nbsp;的长度,把&nbsp;<code>-1</code>&nbsp;添加到&nbsp;<code>ans</code></li>
</ul>
</li>
</ul>
<p>请你返回一个整数数组,包含所有上一个遍历的整数</p>
<p>请你返回数组&nbsp;<code>ans</code></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<b>输入:</b><code>words</code> = ["1","2","prev","prev","prev"]
<b>输入:</b>nums = [1,2,-1,-1,-1]
<b>输出:</b>[2,1,-1]
<b>解释:</b>
对于下标为 2 处的 "prev" ,上一个遍历的整数是 2 ,因为连续 "prev" 数目为 1 ,同时在数组 reverse_nums 中第一个元素是 2
对于下标为 3 处的 "prev" ,上一个遍历的整数是 1 ,因为连续 "prev" 数目为 2 ,同时在数组 reverse_nums 中,第二个元素是 1
对于下标为 4 处的 "prev" ,上一个遍历的整数是 -1 ,因为连续 "prev" 数目为 3 ,但总共只遍历过 2 个整数
<b>解释:</b> 开始时 seen = [] 且 ans = []。
1.处理 nums[0]nums 中第一个元素是 1。我们将其放在 seen 的前面。现在seen == [1]
2.处理 nums[1]:下一个元素是 2。我们将其放在 seen 的前面。现在seen == [2, 1]
3.处理 nums[2]:下一个元素是 -1。这是 -1 的第一次出现,所以 k == 1。我们找到 seen 中的第一个元素,把 2 添加到 ans。现在ans == [2]
4.处理 nums[3]:又一个 -1。这是 -1 的第二次出现,所以 k == 2。seen 中的第二个元素是 1所以我们把 1 添加到 ans。现在ans == [2, 1]。
5.处理 nums[4]:又一个 -1。第三次出现让 k = 3。然而seen 中只有两个元素([2, 1])。因为 k 比 seen 中的元素数量更大,我们把 -1 添加到 ans。最终ans == [2, 1, -1]。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b><code>words</code> = ["1","prev","2","prev","prev"]
<b>输入:</b>nums = [1,-1,2,-1,-1]
<b>输出:</b>[1,2,1]
<strong>解释:</strong>
对于下标为 1 处的 "prev" ,上一个遍历的整数是 1
对于下标为 3 处的 "prev" ,上一个遍历的整数是 2
对于下标为 4 处的 "prev" ,上一个遍历的整数是 1 ,因为连续 "prev"<strong>&nbsp;</strong>数目为 2 ,同时在数组 reverse_nums 中,第二个元素是 1
<strong>解释:</strong> 开始时 seen = [] 且 ans = []。
1.处理 nums[0]nums 中的第一个元素是 1。我们将其放在 seen 的前面。现在seen == [1]
2.处理 nums[1]:下一个元素是 -1。这是 -1 的第一次出现,所以 k == 1。我们找到 seen 中的第一个元素,即 1。把 1 添加到 ans。现在ans == [1]
3.处理 nums[2]:下一个元素是 2。我们将其放在 seen 的前面。现在seen == [2, 1]
4.处理 nums[3]:下一个元素是 -1。这个 -1 与 第一个 -1 不连续,因为中间有个 2。因此k 重置为 1。seen 中的第一个元素是 2所以我们把 2 添加到 ans。现在ans == [1, 2]。
5.处理 nums[4]:又一个 -1。它与前一个 -1 相邻,所以 k == 2。seen 中的第 2 个元素是 1。把 1 添加到 ans。最终ans == [1, 2, 1]。
</pre>
<p>&nbsp;</p>
@@ -38,6 +49,6 @@
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= words.length &lt;= 100</code></li>
<li><code>words[i] == "prev"</code>&nbsp;&nbsp;<code>1 &lt;= int(words[i]) &lt;= 100</code></li>
<li><code>1 &lt;= nums.length &lt;= 100</code></li>
<li><code>nums[i] == -1</code>&nbsp;&nbsp;<code>1 &lt;= nums[i]&nbsp;&lt;= 100</code></li>
</ul>