LeetCode——476. Number Complement(二进制,C++)

来源:互联网 发布:windows取消自动更新 编辑:程序博客网 时间:2024/05/16 01:49

题目链接


Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.

Note:

  1. The given integer is guaranteed to fit within the range of a 32-bit signed integer.
  2. You could assume no leading zero bit in the integer’s binary representation.

Example 1:

Input: 5Output: 2Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.

Example 2:

Input: 1Output: 0Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.

题解:

      观察可知要求输出的结果和给定的数之和的形式为111...111,故而只需找到刚好大于的1000....,减1得到11....,再减去原来的数,即为结果。

代码:

class Solution {
public:
    int findComplement(int num) {
        unsigned int x=1;
        while(1)
        {
             if(x>num)
                return x-num-1;
            else
                x<<=1;
        }
    }
};

原创粉丝点击