1009 十进制整数的反码 leetcode

简介: 1009 十进制整数的反码 leetcode

每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。


二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。


给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。



示例 1:


输入:5

输出:2

解释:5 的二进制表示为 "101",其二进制反码为 "010",也就是十进制中的 2 。

示例 2:


输入:7

输出:0

解释:7 的二进制表示为 "111",其二进制反码为 "000",也就是十进制中的 0 。

示例 3:


输入:10

输出:5

解释:10 的二进制表示为 "1010",其二进制反码为 "0101",也就是十进制中的 5 。


提示:


0 <= N < 10^9


   class Solution {

   public:

       int bitwiseComplement(int N) {

           vector<int>v;

            vector<int>r;

           int x,y=0,z;

           if(!N)

               return 1;

           while(N)

           {

                x=N%2;

               v.push_back(x);

                N/=2;

           }

           while(!v.empty())

           {z=v.back();

            if(z)

                z=0;

            else

                z=1;

            v.pop_back();

            r.push_back(z);  

           }

           int i;

           for(i=0;i<r.size();i++)

               if(r[i])

                   break;

        for(int j=r.size()-1, k=0;j>=i;j--)

            y+=r[j]*pow(2,k++);

         

           return y;

       }

   };

N=0,一定要额外拿出来单独考虑,因为它没法进入第一个while,

就不能处理了。

目录
相关文章
|
6天前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
25 0
|
6天前
|
存储 Python
leetcode-7:整数反转
leetcode-7:整数反转
23 1
|
6天前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
6天前
leetcode代码记录(整数拆分
leetcode代码记录(整数拆分
13 0
|
6天前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
6天前
|
存储 算法
leetcode1237. 找出给定方程的正整数解
leetcode1237. 找出给定方程的正整数解
8 0
|
6天前
|
算法 Java
【力扣经典面试题】12. 整数转罗马数字
【力扣经典面试题】12. 整数转罗马数字
|
6天前
leetcode2376. 统计特殊整数
leetcode2376. 统计特殊整数
15 1
|
6天前
|
Serverless
leetcode2719. 统计整数数目
leetcode2719. 统计整数数目
14 0
力扣2457 美丽整数最小增量
力扣2457 美丽整数最小增量