3766. Minimum Operations to Make Binary Palindrome Medium

@problem@discussion
#Array#Two Pointers#Binary Search#Bit Manipulation



1/**
2 * [3766] Minimum Operations to Make Binary Palindrome
3 *
4 * You are given an integer array nums.
5 * For each element nums[i], you may perform the following operations any number of times (including zero):
6 * 
7 * 	Increase nums[i] by 1, or
8 * 	Decrease nums[i] by 1.
9 * 
10 * A number is called a binary palindrome if its binary representation without leading zeros reads the same forward and backward.
11 * Your task is to return an integer array ans, where ans[i] represents the minimum number of operations required to convert nums[i] into a binary palindrome.
12 *  
13 * <strong class="example">Example 1:
14 * <div class="example-block">
15 * Input: <span class="example-io">nums = [1,2,4]</span>
16 * Output: <span class="example-io">[0,1,1]</span>
17 * Explanation:
18 * One optimal set of operations:
19 * <table style="border: 1px solid black;">
20 * 	<thead>
21 * 		<tr>
22 * 			<th style="border: 1px solid black;">nums[i]</th>
23 * 			<th style="border: 1px solid black;">Binary(nums[i])</th>
24 * 			<th style="border: 1px solid black;">Nearest<br />
25 * 			Palindrome</th>
26 * 			<th style="border: 1px solid black;">Binary<br />
27 * 			(Palindrome)</th>
28 * 			<th style="border: 1px solid black;">Operations Required</th>
29 * 			<th style="border: 1px solid black;">ans[i]</th>
30 * 		</tr>
31 * 	</thead>
32 * 	<tbody>
33 * 		<tr>
34 * 			<td style="border: 1px solid black;">1</td>
35 * 			<td style="border: 1px solid black;">1</td>
36 * 			<td style="border: 1px solid black;">1</td>
37 * 			<td style="border: 1px solid black;">1</td>
38 * 			<td style="border: 1px solid black;">Already palindrome</td>
39 * 			<td style="border: 1px solid black;">0</td>
40 * 		</tr>
41 * 		<tr>
42 * 			<td style="border: 1px solid black;">2</td>
43 * 			<td style="border: 1px solid black;">10</td>
44 * 			<td style="border: 1px solid black;">3</td>
45 * 			<td style="border: 1px solid black;">11</td>
46 * 			<td style="border: 1px solid black;">Increase by 1</td>
47 * 			<td style="border: 1px solid black;">1</td>
48 * 		</tr>
49 * 		<tr>
50 * 			<td style="border: 1px solid black;">4</td>
51 * 			<td style="border: 1px solid black;">100</td>
52 * 			<td style="border: 1px solid black;">3</td>
53 * 			<td style="border: 1px solid black;">11</td>
54 * 			<td style="border: 1px solid black;">Decrease by 1</td>
55 * 			<td style="border: 1px solid black;">1</td>
56 * 		</tr>
57 * 	</tbody>
58 * </table>
59 * Thus, ans = [0, 1, 1].
60 * </div>
61 * <strong class="example">Example 2:
62 * <div class="example-block">
63 * Input: <span class="example-io">nums = [6,7,12]</span>
64 * Output: <span class="example-io">[1,0,3]</span>
65 * Explanation:
66 * One optimal set of operations:
67 * <table style="border: 1px solid black;">
68 * 	<thead>
69 * 		<tr>
70 * 			<th style="border: 1px solid black;">nums[i]</th>
71 * 			<th style="border: 1px solid black;">Binary(nums[i])</th>
72 * 			<th style="border: 1px solid black;">Nearest<br />
73 * 			Palindrome</th>
74 * 			<th style="border: 1px solid black;">Binary<br />
75 * 			(Palindrome)</th>
76 * 			<th style="border: 1px solid black;">Operations Required</th>
77 * 			<th style="border: 1px solid black;">ans[i]</th>
78 * 		</tr>
79 * 	</thead>
80 * 	<tbody>
81 * 		<tr>
82 * 			<td style="border: 1px solid black;">6</td>
83 * 			<td style="border: 1px solid black;">110</td>
84 * 			<td style="border: 1px solid black;">5</td>
85 * 			<td style="border: 1px solid black;">101</td>
86 * 			<td style="border: 1px solid black;">Decrease by 1</td>
87 * 			<td style="border: 1px solid black;">1</td>
88 * 		</tr>
89 * 		<tr>
90 * 			<td style="border: 1px solid black;">7</td>
91 * 			<td style="border: 1px solid black;">111</td>
92 * 			<td style="border: 1px solid black;">7</td>
93 * 			<td style="border: 1px solid black;">111</td>
94 * 			<td style="border: 1px solid black;">Already palindrome</td>
95 * 			<td style="border: 1px solid black;">0</td>
96 * 		</tr>
97 * 		<tr>
98 * 			<td style="border: 1px solid black;">12</td>
99 * 			<td style="border: 1px solid black;">1100</td>
100 * 			<td style="border: 1px solid black;">15</td>
101 * 			<td style="border: 1px solid black;">1111</td>
102 * 			<td style="border: 1px solid black;">Increase by 3</td>
103 * 			<td style="border: 1px solid black;">3</td>
104 * 		</tr>
105 * 	</tbody>
106 * </table>
107 * Thus, ans = [1, 0, 3].
108 * </div>
109 *  
110 * Constraints:
111 * 
112 * 	1 <= nums.length <= 5000
113 * 	^​​​​​​​1 <= nums[i] <=^ 5000
114 * 
115 */
116pub struct Solution {}
117
118// problem: https://leetcode.com/problems/minimum-operations-to-make-binary-palindrome/
119// discuss: https://leetcode.com/problems/minimum-operations-to-make-binary-palindrome/discuss/?currentPage=1&orderBy=most_votes&query=
120
121// submission codes start here
122
123impl Solution {
124    pub fn min_operations(nums: Vec<i32>) -> Vec<i32> {
125        vec![]
126    }
127}
128
129// submission codes end
130
131#[cfg(test)]
132mod tests {
133    use super::*;
134
135    #[test]
136    fn test_3766() {
137    }
138}
139

Back
© 2026 bowen.ge All Rights Reserved.