-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1009.十进制整数的反码.py
73 lines (68 loc) · 1.67 KB
/
1009.十进制整数的反码.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#
# @lc app=leetcode.cn id=1009 lang=python3
#
# [1009] 十进制整数的反码
#
# https://leetcode.cn/problems/complement-of-base-10-integer/description/
#
# algorithms
# Easy (58.93%)
# Likes: 74
# Dislikes: 0
# Total Accepted: 18.8K
# Total Submissions: 31.9K
# Testcase Example: '5'
#
# 每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。注意,除 N = 0
# 外,任何二进制表示中都不含前导零。
#
# 二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。
#
# 给你一个十进制数 N,请你返回其二进制表示的反码所对应的十进制整数。
#
#
#
#
#
#
# 示例 1:
#
# 输入:5
# 输出:2
# 解释:5 的二进制表示为 "101",其二进制反码为 "010",也就是十进制中的 2 。
#
#
# 示例 2:
#
# 输入:7
# 输出:0
# 解释:7 的二进制表示为 "111",其二进制反码为 "000",也就是十进制中的 0 。
#
#
# 示例 3:
#
# 输入:10
# 输出:5
# 解释:10 的二进制表示为 "1010",其二进制反码为 "0101",也就是十进制中的 5 。
#
#
#
#
# 提示:
#
#
# 0 <= N < 10^9
# 本题与 476:https://leetcode-cn.com/problems/number-complement/ 相同
#
#
#
# @lc code=start
class Solution:
def bitwiseComplement(self, n: int) -> int:
# 直接得到与n相同二进制位数的全1数
# 然后与其异或得到结果
return n^ (1<<len(bin(n)[2:]))-1
# if not n :
# return 1
# return n^ (1<<int(log(n,2)+1))-1
# @lc code=end