列表

详情


476. 数字的补数

对整数的二进制表示取反(0110)后,再转换为十进制表示,可以得到这个整数的补数。

给你一个整数 num ,输出它的补数。

 

示例 1:

输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。

示例 2:

输入:num = 1
输出:0
解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。

 

提示:

 

注意:本题与 1009 https://leetcode.cn/problems/complement-of-base-10-integer/ 相同

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int findComplement(int num) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-11 10:42:27

func findComplement(num int) int {
    // 反码+1
    temp, c := num, 0
    for temp > 0 {
        temp >>= 1
        c = (c << 1) + 1
    }
    return num ^ c
}

上一题