Untitled
unknown
plain_text
a year ago
1.5 kB
14
Indexable
class Solution {
public:
pair < int , int > countSetBits(int n) {
int count = 0,msb = 0;
pair < int , int > pq;
while (n) {
count += n & 1;
n >>= 1;
msb++;
}
return {count , msb} ;
}
int minimizeXor(int num1, int num2) {
pair < int , int > num1On = countSetBits(num1);
pair < int , int > num2On = countSetBits(num2);
int ans = 0, dif = abs(num1On.first - num2On.first);
if(num2On.first == num1On.first) {
return num1;
} else if (num2On.first > num1On.first) {
int temp = num1, cnt = 0, loop = max(num2On.second, num1On.second);
dif = abs(num1On.first - num2On.first);
ans+=num1;
for(int i=0;i<31;i++) {
if( dif == 0) break;
if((temp & (1 << i)) == 0) {
dif--;
ans+=1<<i;
}
}
} else {
int temp = num1, cnt = 0,loop = max(num2On.second, num1On.second);
dif = num2On.first;
for(int i=30;i>=0;i--) {
if(dif == 0)break;
if((temp & (1 << i)) > 0) {
dif--;
ans+=1<<i;
}
cnt++;
}
}
return ans;
}
};
//0001
//1100
//0011001
//1001000
//1000001
//1010100
//1000011
//0011
//1011
Editor is loading...
Leave a Comment