11
11
* each number in the array.
12
12
*
13
13
* Worst Case Time Complexity: O(n * log(MAX_VAL)) where MAX_VAL is the maximum
14
- * value in the array (64-bit integers here) Space Complexity: O(n *
15
- * log(MAX_VAL))
16
- *
17
- * @author [Abhiraj Mandal](https://github.com/DataWorshipper)
14
+ * value in the array (64-bit integers here)
15
+ *
16
+ * Space Complexity: O(n * log(MAX_VAL))
17
+ *
18
+ *@author [Abhiraj Mandal](https://github.com/DataWorshipper)
18
19
*/
19
20
20
21
#include < algorithm> // for std::max
@@ -95,7 +96,7 @@ class Trie {
95
96
* @param nums vector of unsigned 64-bit integers
96
97
* @return maximum XOR of any pair
97
98
*/
98
- std::uint64_t findMaximumXOR (const std::vector<std::uint64_t >& nums) {
99
+ std::uint64_t find_maximum_xor (const std::vector<std::uint64_t >& nums) {
99
100
if (nums.empty ()) {
100
101
return 0 ;
101
102
}
@@ -117,77 +118,77 @@ std::uint64_t findMaximumXOR(const std::vector<std::uint64_t>& nums) {
117
118
* @brief Self-test implementations
118
119
*/
119
120
static void test () {
120
- using bit_manipulation::max_xor_bit_trie::findMaximumXOR ;
121
-
121
+ using bit_manipulation::max_xor_bit_trie::find_maximum_xor ;
122
+
122
123
// Test 1: LeetCode Example
123
124
{
124
125
std::vector<std::uint64_t > nums = {3ULL , 10ULL , 5ULL ,
125
126
25ULL , 2ULL , 8ULL };
126
- assert (findMaximumXOR (nums) == 28ULL );
127
+ assert (find_maximum_xor (nums) == 28ULL );
127
128
}
128
129
129
130
// Test 2: Single element
130
131
{
131
132
std::vector<std::uint64_t > nums = {42ULL };
132
- assert (findMaximumXOR (nums) == 0ULL );
133
+ assert (find_maximum_xor (nums) == 0ULL );
133
134
}
134
135
135
136
// Test 3: Two elements
136
137
{
137
138
std::vector<std::uint64_t > nums = {8ULL , 1ULL };
138
- assert (findMaximumXOR (nums) == 9ULL );
139
+ assert (find_maximum_xor (nums) == 9ULL );
139
140
}
140
141
141
142
// Test 4: All zeros
142
143
{
143
144
std::vector<std::uint64_t > nums = {0ULL , 0ULL , 0ULL };
144
- assert (findMaximumXOR (nums) == 0ULL );
145
+ assert (find_maximum_xor (nums) == 0ULL );
145
146
}
146
147
147
148
// Test 5: Max and Min values
148
149
{
149
150
std::vector<std::uint64_t > nums = {0xFFFFFFFFFFFFFFFFULL ,
150
151
0x0000000000000000ULL };
151
- assert (findMaximumXOR (nums) == 0xFFFFFFFFFFFFFFFFULL );
152
+ assert (find_maximum_xor (nums) == 0xFFFFFFFFFFFFFFFFULL );
152
153
}
153
154
154
155
// Test 6: Duplicates
155
156
{
156
157
std::vector<std::uint64_t > nums = {7ULL , 7ULL , 7ULL };
157
- assert (findMaximumXOR (nums) == 0ULL );
158
+ assert (find_maximum_xor (nums) == 0ULL );
158
159
}
159
160
160
161
// Test 7: Increasing sequence
161
162
{
162
163
std::vector<std::uint64_t > nums = {1ULL , 2ULL , 3ULL , 4ULL , 5ULL };
163
- assert (findMaximumXOR (nums) == 7ULL );
164
+ assert (find_maximum_xor (nums) == 7ULL );
164
165
}
165
166
166
167
// Test 8: Decreasing sequence
167
168
{
168
169
std::vector<std::uint64_t > nums = {16ULL , 8ULL , 4ULL , 2ULL , 1ULL };
169
- assert (findMaximumXOR (nums) == 24ULL );
170
+ assert (find_maximum_xor (nums) == 24ULL );
170
171
}
171
172
172
173
// Test 9: Powers of 2
173
174
{
174
175
std::vector<std::uint64_t > nums = {1ULL , 2ULL , 4ULL ,
175
176
8ULL , 16ULL , 32ULL };
176
- assert (findMaximumXOR (nums) == 48ULL );
177
+ assert (find_maximum_xor (nums) == 48ULL );
177
178
}
178
179
179
180
// Test 10: Mixed random values
180
181
{
181
182
std::vector<std::uint64_t > nums = {9ULL , 14ULL , 3ULL , 6ULL , 12ULL };
182
- assert (findMaximumXOR (nums) == 11ULL || findMaximumXOR (nums) == 10ULL ||
183
+ assert (find_maximum_xor (nums) == 11ULL || find_maximum_xor (nums) == 10ULL ||
183
184
true );
184
185
}
185
186
186
187
// Test 11: Small alternating bits
187
188
{
188
189
std::vector<std::uint64_t > nums = {0b101010ULL , 0b010101ULL ,
189
190
0b111111ULL , 0b000000ULL };
190
- assert (findMaximumXOR (nums) == 63ULL );
191
+ assert (find_maximum_xor (nums) == 63ULL );
191
192
}
192
193
193
194
// Test 12: Large count
@@ -196,9 +197,15 @@ static void test() {
196
197
for (std::uint64_t i = 0 ; i < 100ULL ; ++i) {
197
198
nums.push_back (i);
198
199
}
199
- assert (findMaximumXOR (nums) > 0ULL );
200
+ assert (find_maximum_xor (nums) > 0ULL );
200
201
}
201
202
203
+ // Test 13: Empty Vector Test
204
+ { std::vector<std::uint64_t > nums = {};
205
+
206
+ assert (find_maximum_xor (nums) == 0ULL );
207
+ }
208
+
202
209
std::cout << " All test cases successfully passed!" << std::endl;
203
210
}
204
211
0 commit comments