classSolution { public: intconvertInteger(int A, int B){ unsignedint C = A ^ B; // 由于有符号数的int只有31位表示数值,一位表示符号,所以转换成无符号数防止在负数的31个1减1后溢出(但是在vs中调试时,溢出后会变成有符号数的正数最大值,计算依旧成立) int ret = 0; while(C) { C &= C - 1; ++ret; } return ret; } };
/** * Your SortedStack object will be instantiated and called as such: * SortedStack* obj = new SortedStack(); * obj->push(val); * obj->pop(); * int param_3 = obj->peek(); * bool param_4 = obj->isEmpty(); */
/** * Your TripleInOne object will be instantiated and called as such: * TripleInOne* obj = new TripleInOne(stackSize); * obj->push(stackNum,value); * int param_2 = obj->pop(stackNum); * int param_3 = obj->peek(stackNum); * bool param_4 = obj->isEmpty(stackNum); */
/** * Your TripleInOne object will be instantiated and called as such: * TripleInOne* obj = new TripleInOne(stackSize); * obj->push(stackNum,value); * int param_2 = obj->pop(stackNum); * int param_3 = obj->peek(stackNum); * bool param_4 = obj->isEmpty(stackNum); */