class Solution { public: intfindComplement(int num){ int result = 0; stack<int> s; while(num) { int bit = num & 1; num >>= 1; s.push(bit); } while(!s.empty()) { result <<= 1; int bit = s.top(); s.pop(); result |= (bit ^ 1); } return result; } };
Version 2
1 2 3 4 5 6 7 8 9 10
class Solution { public: intfindComplement(int num){ int mask = ~0; while (num & mask) { mask <<= 1; } return ~mask & ~num; } };