|
2 | 2 | comments: true
|
3 | 3 | difficulty: 中等
|
4 | 4 | edit_url: https://github.com/doocs/leetcode/edit/main/solution/3400-3499/3431.Minimum%20Unlocked%20Indices%20to%20Sort%20Nums/README.md
|
| 5 | +tags: |
| 6 | + - 数组 |
| 7 | + - 哈希表 |
5 | 8 | ---
|
6 | 9 |
|
7 | 10 | <!-- problem:start -->
|
8 | 11 |
|
9 |
| -# [3431. Minimum Unlocked Indices to Sort Nums 🔒](https://leetcode.cn/problems/minimum-unlocked-indices-to-sort-nums) |
| 12 | +# [3431. 对数字排序的最小解锁下标 🔒](https://leetcode.cn/problems/minimum-unlocked-indices-to-sort-nums) |
10 | 13 |
|
11 | 14 | [English Version](/solution/3400-3499/3431.Minimum%20Unlocked%20Indices%20to%20Sort%20Nums/README_EN.md)
|
12 | 15 |
|
13 | 16 | ## 题目描述
|
14 | 17 |
|
15 | 18 | <!-- description:start -->
|
16 | 19 |
|
17 |
| -<p>You are given an array <code>nums</code> consisting of integers between 1 and 3, and a <strong>binary</strong> array <code>locked</code> of the same size.</p> |
| 20 | +<p>给定一个仅包含 1、2、3 的整数的数组 <code>nums</code>,以及一个相同大小的 <strong>二进制</strong> 数组 <code>locked</code>。</p> |
18 | 21 |
|
19 |
| -<p>We consider <code>nums</code> <strong>sortable</strong> if it can be sorted using adjacent swaps, where a swap between two indices <code>i</code> and <code>i + 1</code> is allowed if <code>nums[i] - nums[i + 1] == 1</code> and <code>locked[i] == 0</code>.</p> |
| 22 | +<p>当满足 <code>nums[i] - nums[i + 1] == 1</code> 且 <code>locked[i] == 0</code>时,则允许交换下标 <code>i</code> 和 <code>i + 1</code> 处的元素;如果可以通过交换相邻元素将 <code>nums</code> 升序排序,我们认为 <code>nums</code> 是 <strong>可排序的。</strong></p> |
20 | 23 |
|
21 |
| -<p>In one operation, you can unlock any index <code>i</code> by setting <code>locked[i]</code> to 0.</p> |
| 24 | +<p>你可以进行若干次操作,每次操作可以将 <code>locked[i]</code> 设置为 <code>0</code>,从而解锁下标 <code>i</code>。</p> |
22 | 25 |
|
23 |
| -<p>Return the <strong>minimum</strong> number of operations needed to make <code>nums</code> <strong>sortable</strong>. If it is not possible to make <code>nums</code> sortable, return -1.</p> |
| 26 | +<p>返回使 <code>nums</code> 满足 <strong>可排序的</strong> 所需 <strong>最小</strong> 操作次数。如果不可能使 <code>nums</code> <strong>可排序</strong>,返回 -1。</p> |
24 | 27 |
|
25 | 28 | <p> </p>
|
26 |
| -<p><strong class="example">Example 1:</strong></p> |
| 29 | + |
| 30 | +<p><strong class="example">示例 1:</strong></p> |
27 | 31 |
|
28 | 32 | <div class="example-block">
|
29 |
| -<p><strong>Input:</strong> <span class="example-io">nums = [1,2,1,2,3,2], locked = [1,0,1,1,0,1]</span></p> |
| 33 | +<p><span class="example-io"><b>输入:</b>nums = [1,2,1,2,3,2], locked = [1,0,1,1,0,1]</span></p> |
30 | 34 |
|
31 |
| -<p><strong>Output:</strong> <span class="example-io">0</span></p> |
| 35 | +<p><span class="example-io"><b>输出:</b>0</span></p> |
32 | 36 |
|
33 |
| -<p><strong>Explanation:</strong></p> |
| 37 | +<p><strong>解释:</strong></p> |
34 | 38 |
|
35 |
| -<p>We can sort <code>nums</code> using the following swaps:</p> |
| 39 | +<p>我们可以按如下交换来排序 <code>nums</code>。</p> |
36 | 40 |
|
37 | 41 | <ul>
|
38 |
| - <li>swap indices 1 with 2</li> |
39 |
| - <li>swap indices 4 with 5</li> |
| 42 | + <li>交换下标 1 和 2</li> |
| 43 | + <li>交换下标 4 和 5</li> |
40 | 44 | </ul>
|
41 | 45 |
|
42 |
| -<p>So, there is no need to unlock any index.</p> |
| 46 | +<p>所以,不需要解锁任何下标。</p> |
43 | 47 | </div>
|
44 | 48 |
|
45 |
| -<p><strong class="example">Example 2:</strong></p> |
| 49 | +<p><strong class="example">示例 2:</strong></p> |
46 | 50 |
|
47 | 51 | <div class="example-block">
|
48 |
| -<p><strong>Input:</strong> <span class="example-io">nums = [1,2,1,1,3,2,2], locked = [1,0,1,1,0,1,0]</span></p> |
| 52 | +<p><span class="example-io"><b>输入:</b>nums = [1,2,1,1,3,2,2], locked = [1,0,1,1,0,1,0]</span></p> |
49 | 53 |
|
50 |
| -<p><strong>Output:</strong> <span class="example-io">2</span></p> |
| 54 | +<p><span class="example-io"><b>输出:</b>2</span></p> |
51 | 55 |
|
52 |
| -<p><strong>Explanation:</strong></p> |
| 56 | +<p><strong>解释:</strong></p> |
53 | 57 |
|
54 |
| -<p>If we unlock indices 2 and 5, we can sort <code>nums</code> using the following swaps:</p> |
| 58 | +<p>如果我们解锁下标 2 和 5,我们可以按如下交换来排序 <code>nums</code>。</p> |
55 | 59 |
|
56 | 60 | <ul>
|
57 |
| - <li>swap indices 1 with 2</li> |
58 |
| - <li>swap indices 2 with 3</li> |
59 |
| - <li>swap indices 4 with 5</li> |
60 |
| - <li>swap indices 5 with 6</li> |
| 61 | + <li>交换下标 1 和 2</li> |
| 62 | + <li>交换下标 2 和 3</li> |
| 63 | + <li>交换下标 4 和 5</li> |
| 64 | + <li>交换下标 5 和 6</li> |
61 | 65 | </ul>
|
62 | 66 | </div>
|
63 | 67 |
|
64 |
| -<p><strong class="example">Example 3:</strong></p> |
| 68 | +<p><strong class="example">示例 3:</strong></p> |
65 | 69 |
|
66 | 70 | <div class="example-block">
|
67 |
| -<p><strong>Input:</strong> <span class="example-io">nums = [1,2,1,2,3,2,1], locked = [0,0,0,0,0,0,0]</span></p> |
| 71 | +<p><strong>输入:</strong><span class="example-io">nums = [1,2,1,2,3,2,1], locked = [0,0,0,0,0,0,0]</span></p> |
68 | 72 |
|
69 |
| -<p><strong>Output:</strong> <span class="example-io">-1</span></p> |
| 73 | +<p><span class="example-io"><b>输出:</b>-1</span></p> |
70 | 74 |
|
71 |
| -<p><strong>Explanation:</strong></p> |
| 75 | +<p><strong>解释:</strong></p> |
72 | 76 |
|
73 |
| -<p>Even if all indices are unlocked, it can be shown that <code>nums</code> is not sortable.</p> |
| 77 | +<p>尽管所有下标都是解锁的,可以发现 <code>nums</code> 不可排序。</p> |
74 | 78 | </div>
|
75 | 79 |
|
76 | 80 | <p> </p>
|
77 |
| -<p><strong>Constraints:</strong></p> |
| 81 | + |
| 82 | +<p><strong>提示:</strong></p> |
78 | 83 |
|
79 | 84 | <ul>
|
80 | 85 | <li><code>1 <= nums.length <= 10<sup>5</sup></code></li>
|
|
0 commit comments