美文网首页
476. Number Complement

476. Number Complement

作者: 衣介书生 | 来源:发表于2018-04-05 14:48 被阅读12次

题目分析

题目链接,登录 LeetCode 后可用
这道题目要求是求一个正整数的补数,并且假设正整数的二进制形式不以 0 开头。所有我们要做的就是找到第一个非 0 的位置,然后依次开始翻转就可以了。

代码

class Solution {
    public int findComplement(int num) {
        boolean flag = false;
        // 题目要求是 32 位整数
        for(int i = 31; i >= 0; i--) {
            // 找到第一个 1
            if((num & (1 << i)) != 0) {
                flag = true;
            }
            // 翻转该位
            if(flag) {
                num ^= (1 << i);
            }
        }
        return num;
    }
}

相关文章

网友评论

      本文标题:476. Number Complement

      本文链接:https://www.haomeiwen.com/subject/slyvzxtx.html