zoukankan      html  css  js  c++  java
  • 剑指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")
  • 相关阅读:
    无言
    计算机网络的所有课件
    Linux 分区
    Linux 文件管理权限
    DropDownList 控件
    CssClass初步语法了解
    BulletedList用途
    BulletedList项目控件基础CSS基础
    Checkbox与foreach循环
    RadioButton控件
  • 原文地址:https://www.cnblogs.com/yanmk/p/9194497.html
Copyright © 2011-2022 走看看