美文网首页
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