LeetCode 476. Number Complement

来源:互联网 发布:腾讯视频网络设置在哪 编辑:程序博客网 时间:2024/06/06 00:53

476. Number Complement

一、问题描述

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

二、输入输出

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.

三、解题思路

  • 把num不断右移(相当于是除以2),然后对2取余数,可以不断取出各个bit
  • 将这些bit存储在vector中,并进行翻转
  • 降vector中各个bit左移(相当于是乘以2的多少次方)然后加起来即可
class Solution {public:    int findComplement(int num) {        int cur = num, sum = 0;        vector<int> ret;        while(cur != 0){            ret.push_back(cur % 2);            cur = cur >> 1;        }        for (int i = 0; i < ret.size(); i++){            ret[i] = !ret[i];            sum += (ret[i] << i);        }        return sum;    }};
原创粉丝点击