首页 > 学院 > 开发设计 > 正文

LeetCode第二天

2019-11-08 00:43:37
字体:
来源:转载
供稿:网友

476. Number Complement

题目描述:Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary rePResentation. 给定一个正整数,输出其补数。 补码策略是翻转其二进制表示的位。

Note:(数据范围) The given integer is guaranteed to fit within the range of a 32-bit signed integer. You could assume no leading zero bit in the integer’s binary representation.

示例: Example 1: Input: 5 Output: 2 Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.

Example 2: Input: 1 Output: 0 Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.

Subscribe to see which companies asked this question.

代码如下:(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用三元运算符直接翻转其二进制表示的位.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表