频道栏目
首页 > 资讯 > 其他 > 正文

LeetCode 476题目解答

17-02-23        来源:[db:作者]  
收藏   我要投稿

LeetCode 476题目解答:给定一个正整数,输出其补数。 补码策略是翻转其二进制表示的位。

代码如下:(C++)

class Solution {
public:
    int findComplement(int num) {
        int y = 0;
        if(num == 0)
            return 1;
        int c = 1;
        while(num != 0)
        {
            int a = num%2;
            int b = a>0?0:1;
            y += b*c;
            c *=2;
            num = num / 2;
        }
        return y;
    }
};

遇到的问题:
1.智障的我把第5行if条件写成了单等号,调试很久都是错误的,显示不出正确结果,该打。
2.二进制转换为十进制用 y=a0* 2^0 +a1* 2^1 +a2* 2^2 +a3* 2^3 +a4* 2^4 + … (此时2^0表示2的0次方)
2的n次方在代码中用c来表示,b用三元运算符直接翻转其二进制表示的位。

相关TAG标签
上一篇:抽象工厂
下一篇:SQL中如何修改表格中列的默认值
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站