/*
* Leetcode476. Number Complement
* Funtion: Given a positive integer, output its complement number.
The complement strategy is to flip the bits of its binary representation.
* Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer.
You could assume no leading zero bit in the integer’s binary representation.
* Example: Input: 5(101)
Output: 2(010)
* Author: LKJ
* Date: 2017/3/02
* Hint:
*/
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
class Solution {
public:
int findComplement(int num) {
int i = 0,res = 0;
while((!(num&0x80000000))&&(i<31)){num <<= 1;i++;}
while(i<32){
res <<= 1;
res |= ((num&0x80000000)==0) ? 1 : 0;
i++;
num<<=1;
}
return res;
}
};
/*function2
class Solution {
public:
int findComplement(int num) {
unsigned mask = ~0;
while (num & mask) mask <<= 1;
return ~mask & ~num;
}
};
//num = 00000101
//mask = 11111000
//~mask & ~num = 00000010
*/
int main(){
int myin = 0;
int myout;
Solution SA;
myout = SA.findComplement(myin);
cout << myout << endl;
return 0;
}
LeetCode 简单操作 | 476. Number Complement
最新推荐文章于 2021-11-30 23:09:15 发布