剑指offer 面试15题
面试15题:
题目:二进制中1的个数
题:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路一:
最佳方法:把一个整数减去1,再和原整数做“与运算”,会把该整数最右边的1变成0。那么一个整数的二进制中表示中有多少个1,就可以进行多少次这样的操作。
解题代码:
# -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): # write code here count=0 if n < 0: n=n & 0xffffffff while (n): n=(n-1) & n count += 1 return count
注意:如果该整数是负数,要把它和0xffffffff相与,消除负数的影响。
解题思路二:利用Python特性
解题代码:
# -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): # write code here return bin(n&0xffffffff).count("1")
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?