classSolution {
publicintfindMinXorBrute(int[] A) {
int ans = Integer.MAX_VALUE;
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A.length; j++) {
if (i != j) {
ans = Math.min(ans, A[i]^ A[j]);
}
}
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
from typing import List
classSolution:
deffindMinXorBrute(self, A: List[int]) -> int:
ans = float('inf')
for i in range(len(A)):
for j in range(len(A)):
if i != j:
ans = min(ans, A[i] ^ A[j])
return ans
The minimum XOR value for any pair in the array will always be found between two numbers that are next to each other in sorted order. This is because sorting brings similar numbers together, minimizing their XOR.
classSolution {
public:int findMinXor(vector<int>&A) {
sort(A.begin(), A.end());
int ans = INT_MAX;
for (int i =0; i < (int)A.size() -1; ++i) {
ans = min(ans, A[i] ^ A[i+1]);
}
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
classSolution {
publicintfindMinXor(int[] A) {
Arrays.sort(A);
int ans = Integer.MAX_VALUE;
for (int i = 0; i < A.length- 1; i++) {
ans = Math.min(ans, A[i]^ A[i+1]);
}
return ans;
}
}
1
2
3
4
5
6
7
8
from typing import List
classSolution:
deffindMinXor(self, A: List[int]) -> int:
A.sort()
ans = float('inf')
for i in range(len(A) -1):
ans = min(ans, A[i] ^ A[i+1])
return ans