class Solution {
public:
int findDuplicate(vector<int>& nums) {
int ans = 0;
for(uint32_t bit = 1; bit; bit <<= 1) {
int x = 0, y = 0;
for(int ii = 0; ii < nums.size(); ii++) {
if(nums[ii] & bit) x++;
if(ii && (ii & bit)) y++;
}
if(x > y) ans |= bit;
}
return ans;
}
};
class Solution {
public:
int findDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
for(int ii = 1; ii < nums.size(); ii++) {
if(nums[ii] == nums[ii-1]) return nums[ii];
}
return -1;
}
};