
1009 十进制整数的反码(模拟)
确定二进制位数:首先,我们需要确定N的二进制表示的位数。可以通过计算N的二进制位数来实现。 计算全1的数:根据二进制位数k,计算一个全由1组成的数。这个数可以表示为(2^k - 1)。 计算反码的十进制值:用全1的数减去N,就能得到二进制反码对应的十进制值。 检查N是否为0:如果N为0,直接返回0,因为0的二进制反码仍为0。 计算二进制位数:使用 计算全1的数:通过位移操作计算(2^k - 1),即全1的数。 计算反码的十进制值:用全1的数减去N,得到结果。
发布日期:2021-05-07 21:56:23
浏览次数:20
分类:精选文章
本文共 617 字,大约阅读时间需要 2 分钟。
为了解决这个问题,我们需要计算给定十进制数N的二进制表示的反码对应的十进制整数。二进制反码是将每个1改为0,0改为1。
方法思路
我们可以通过以下步骤来解决这个问题:
这种方法的时间复杂度是O(1),因为我们只需要进行常数时间的计算来确定二进制位数和计算全1的数。
解决代码
class Solution: def bitwiseComplement(self, N: int) -> int: if N == 0: return 0 k = N.bit_length() full = (1 << k) - 1 return full - N
代码解释
N.bit_length()
方法来获取N的二进制位数k。这种方法简洁高效,能够在常数时间内解决问题,适用于非常大的数。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年05月03日 06时54分29秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP系列:PHP 基础编程 2(时间函数、数组---实现登录&注册&修改)
2025-03-28
PHP系列:使用PHP实现登录注册功能的完整指南
2025-03-28
Python&aconda系列:(W&L)Conda使用faiss-gpu报错及解决办法、安装numpy的坑、cmd执行Python脚本找不到第三方库、安装tensorflow-gpu时遇到的from
2025-03-28
"WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument".
2025-03-28
#if 0 #elif 1 #else #endif 用法
2025-03-28
(反射+内省机制的运用)简单模拟spring IoC容器的操作
2025-03-28
(转)tomcat7.0 manager app和host manager web管理
2025-03-28
(转)使用公用表表达式的递归查询(SQLSERVER2005)
2025-03-28
(转)在CListView列表视图中添加右键菜单的方法
2025-03-28
.Net(C#)实现异步编程
2025-03-28
.Net中webBrowser控件JS交互
2025-03-28
.Net中webBrowser控件指定IE版本
2025-03-28
02-docker系列-镜像分类以及操作(导入、导出、删除)
2025-03-28
02-Docker镜像分类及操作秘籍,轻松掌握导出、导入、删除
2025-03-28
04-docker-commit构建自定义镜像
2025-03-28
04-docker系列-commit构建自定义镜像
2025-03-28