476. Number Complement

num          = 00000101
mask         = 11111111
                    ^ ^ overlap!
num          = 00000101
mask         = 11111110
                    ^   overlap!
num          = 00000101
mask         = 11111100
                    ^   overlap!
num          = 00000101
mask         = 11111000
                          clear!
class Solution {
public:
    int findComplement(int num) {
        unsigned mask = ~0;
        while (num & mask) mask <<= 1;
        return ~mask & ~num;
    }
};

results matching ""

    No results matching ""