LC 1009.Complement of Base 10 Integer
题目描述
这是 LeetCode
上的 1009.
十进制整数的反码 - 力扣(LeetCode)
,难度为简单。
每个非负整数 N
都有其二进制表示。例如, 5
可以被表示为二进制 "101"
,11
可以用二进制
"1011"
表示,依此类推。注意,除 N = 0
外,任何二进制表示中都不含前导零。
二进制的反码表示是将每个 1
改为 0
且每个
0
变为 1
。例如,二进制数 "101"
的二进制反码为 "010"
。
给你一个十进制数
N
,请你返回其二进制表示的反码所对应的十进制整数。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
0 <= N < 10^9
- 本题与 476:https://leetcode-cn.com/problems/number-complement/ 相同
解答
方法一:使用库函数
使用 Integer.toBinaryString()
将十进制转化为二进制,然后逐位修改二进制位得到最终的结果。
1 |
|
时间复杂度:\(O(N)\),其中
N
为数字n
的二进制表示的长度。空间复杂度:\(O(N)\),
N
的含义同上。
方法二:模拟
只需要构造一个和 n
的二进制位数相同的掩码即可。
1 |
|
- 时间复杂度:\(O(\log
n)\),其中
n
为题目所给的n
。 - 空间复杂度:\(O(1)\)。
每题一图
LC 1009.Complement of Base 10 Integer
https://chen-huaneng.github.io/2024/01/26/2024-1-26-2024-01-26-lc-1009/