diff --git a/algorithms/CPlusPlus/Bit-Manupulation/total-hamming-distance.cpp b/algorithms/CPlusPlus/Bit-Manupulation/total-hamming-distance.cpp new file mode 100644 index 00000000..3bf43d13 --- /dev/null +++ b/algorithms/CPlusPlus/Bit-Manupulation/total-hamming-distance.cpp @@ -0,0 +1,37 @@ +#include +using namespace std; + +class Solution { +public: + int totalHammingDistance(vector& nums) { + int i,j,k,one,zero; + int result = 0; + for(i = 0; i < 32; i++){ + k = 1 << i; + one = 0; + zero = 0; + for(auto value: nums){ + if((value & k)) one++; + else zero++; + } + + if(one == nums.size() || zero == nums.size()) continue; + + result += one*zero; + + } + + return result; + } +}; + +int main(){ + vector nums{4,14,2}; + + Solution solution; + + cout<<"Total hammind distance: "; + cout<