剑指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")

 

posted @   Fintech带你飞  阅读(1247)  评论(0编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
点击右上角即可分享
微信分享提示