3724. Minimum Operations to Transform Array Medium
1/**
2 * [3724] Minimum Operations to Transform Array
3 *
4 * <p data-end="180" data-start="93">You are given two integer arrays nums1 of length n and nums2 of length n + 1.
5 * You want to transform nums1 into nums2 using the minimum number of operations.
6 * You may perform the following operations any number of times, each time choosing an index i:
7 *
8 * Increase nums1[i] by 1.
9 * Decrease nums1[i] by 1.
10 * Append nums1[i] to the end of the array.
11 *
12 * Return the minimum number of operations required to transform nums1 into nums2.
13 *
14 * <strong class="example">Example 1:
15 * <div class="example-block">
16 * Input: <span class="example-io">nums1 = [2,8], nums2 = [1,7,3]</span>
17 * Output: <span class="example-io">4</span>
18 * Explanation:
19 * <table style="border: 1px solid black;">
20 * <thead>
21 * <tr>
22 * <th align="center" style="border: 1px solid black;">Step</th>
23 * <th align="center" style="border: 1px solid black;">i</th>
24 * <th align="center" style="border: 1px solid black;">Operation</th>
25 * <th align="center" style="border: 1px solid black;">nums1[i]</th>
26 * <th align="center" style="border: 1px solid black;">Updated nums1</th>
27 * </tr>
28 * </thead>
29 * <tbody>
30 * <tr>
31 * <td align="center" style="border: 1px solid black;">1</td>
32 * <td align="center" style="border: 1px solid black;">0</td>
33 * <td align="center" style="border: 1px solid black;">Append</td>
34 * <td align="center" style="border: 1px solid black;">-</td>
35 * <td align="center" style="border: 1px solid black;">[2, 8, 2]</td>
36 * </tr>
37 * <tr>
38 * <td align="center" style="border: 1px solid black;">2</td>
39 * <td align="center" style="border: 1px solid black;">0</td>
40 * <td align="center" style="border: 1px solid black;">Decrement</td>
41 * <td align="center" style="border: 1px solid black;">Decreases to 1</td>
42 * <td align="center" style="border: 1px solid black;">[1, 8, 2]</td>
43 * </tr>
44 * <tr>
45 * <td align="center" style="border: 1px solid black;">3</td>
46 * <td align="center" style="border: 1px solid black;">1</td>
47 * <td align="center" style="border: 1px solid black;">Decrement</td>
48 * <td align="center" style="border: 1px solid black;">Decreases to 7</td>
49 * <td align="center" style="border: 1px solid black;">[1, 7, 2]</td>
50 * </tr>
51 * <tr>
52 * <td align="center" style="border: 1px solid black;">4</td>
53 * <td align="center" style="border: 1px solid black;">2</td>
54 * <td align="center" style="border: 1px solid black;">Increment</td>
55 * <td align="center" style="border: 1px solid black;">Increases to 3</td>
56 * <td align="center" style="border: 1px solid black;">[1, 7, 3]</td>
57 * </tr>
58 * </tbody>
59 * </table>
60 * Thus, after 4 operations nums1 is transformed into nums2.
61 * </div>
62 * <strong class="example">Example 2:
63 * <div class="example-block">
64 * Input: <span class="example-io">nums1 = [1,3,6], nums2 = [2,4,5,3]</span>
65 * Output: <span class="example-io">4</span>
66 * Explanation:
67 * <table style="border: 1px solid black;">
68 * <thead>
69 * <tr>
70 * <th align="center" style="border: 1px solid black;">Step</th>
71 * <th align="center" style="border: 1px solid black;">i</th>
72 * <th align="center" style="border: 1px solid black;">Operation</th>
73 * <th align="center" style="border: 1px solid black;">nums1[i]</th>
74 * <th align="center" style="border: 1px solid black;">Updated nums1</th>
75 * </tr>
76 * </thead>
77 * <tbody>
78 * <tr>
79 * <td align="center" style="border: 1px solid black;">1</td>
80 * <td align="center" style="border: 1px solid black;">1</td>
81 * <td align="center" style="border: 1px solid black;">Append</td>
82 * <td align="center" style="border: 1px solid black;">-</td>
83 * <td align="center" style="border: 1px solid black;">[1, 3, 6, 3]</td>
84 * </tr>
85 * <tr>
86 * <td align="center" style="border: 1px solid black;">2</td>
87 * <td align="center" style="border: 1px solid black;">0</td>
88 * <td align="center" style="border: 1px solid black;">Increment</td>
89 * <td align="center" style="border: 1px solid black;">Increases to 2</td>
90 * <td align="center" style="border: 1px solid black;">[2, 3, 6, 3]</td>
91 * </tr>
92 * <tr>
93 * <td align="center" style="border: 1px solid black;">3</td>
94 * <td align="center" style="border: 1px solid black;">1</td>
95 * <td align="center" style="border: 1px solid black;">Increment</td>
96 * <td align="center" style="border: 1px solid black;">Increases to 4</td>
97 * <td align="center" style="border: 1px solid black;">[2, 4, 6, 3]</td>
98 * </tr>
99 * <tr>
100 * <td align="center" style="border: 1px solid black;">4</td>
101 * <td align="center" style="border: 1px solid black;">2</td>
102 * <td align="center" style="border: 1px solid black;">Decrement</td>
103 * <td align="center" style="border: 1px solid black;">Decreases to 5</td>
104 * <td align="center" style="border: 1px solid black;">[2, 4, 5, 3]</td>
105 * </tr>
106 * </tbody>
107 * </table>
108 * Thus, after 4 operations nums1 is transformed into nums2.
109 * </div>
110 * <strong class="example">Example 3:
111 * <div class="example-block">
112 * Input: <span class="example-io">nums1 = [2], nums2 = [3,4]</span>
113 * Output: <span class="example-io">3</span>
114 * Explanation:
115 * <table style="border: 1px solid black;">
116 * <thead>
117 * <tr>
118 * <th align="center" style="border: 1px solid black;">Step</th>
119 * <th align="center" style="border: 1px solid black;">i</th>
120 * <th align="center" style="border: 1px solid black;">Operation</th>
121 * <th align="center" style="border: 1px solid black;">nums1[i]</th>
122 * <th align="center" style="border: 1px solid black;">Updated nums1</th>
123 * </tr>
124 * </thead>
125 * <tbody>
126 * <tr>
127 * <td align="center" style="border: 1px solid black;">1</td>
128 * <td align="center" style="border: 1px solid black;">0</td>
129 * <td align="center" style="border: 1px solid black;">Increment</td>
130 * <td align="center" style="border: 1px solid black;">Increases to 3</td>
131 * <td align="center" style="border: 1px solid black;">[3]</td>
132 * </tr>
133 * <tr>
134 * <td align="center" style="border: 1px solid black;">2</td>
135 * <td align="center" style="border: 1px solid black;">0</td>
136 * <td align="center" style="border: 1px solid black;">Append</td>
137 * <td align="center" style="border: 1px solid black;">-</td>
138 * <td align="center" style="border: 1px solid black;">[3, 3]</td>
139 * </tr>
140 * <tr>
141 * <td align="center" style="border: 1px solid black;">3</td>
142 * <td align="center" style="border: 1px solid black;">1</td>
143 * <td align="center" style="border: 1px solid black;">Increment</td>
144 * <td align="center" style="border: 1px solid black;">Increases to 4</td>
145 * <td align="center" style="border: 1px solid black;">[3, 4]</td>
146 * </tr>
147 * </tbody>
148 * </table>
149 * Thus, after 3 operations nums1 is transformed into nums2.
150 * </div>
151 *
152 * Constraints:
153 *
154 * 1 <= n == nums1.length <= 10^5
155 * nums2.length == n + 1
156 * 1 <= nums1[i], nums2[i] <= 10^5
157 *
158 */
159pub struct Solution {}
160
161// problem: https://leetcode.com/problems/minimum-operations-to-transform-array/
162// discuss: https://leetcode.com/problems/minimum-operations-to-transform-array/discuss/?currentPage=1&orderBy=most_votes&query=
163
164// submission codes start here
165
166impl Solution {
167 pub fn min_operations(nums1: Vec<i32>, nums2: Vec<i32>) -> i64 {
168
169 }
170}
171
172// submission codes end
173
174#[cfg(test)]
175mod tests {
176 use super::*;
177
178 #[test]
179 fn test_3724() {
180 }
181}
182Back
© 2026 bowen.ge All Rights Reserved.