3724. Minimum Operations to Transform Array Medium

@problem@discussion
#Array#Greedy



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}
182

Back
© 2026 bowen.ge All Rights Reserved.