剑指offer--day05

1.1 题目:二进制中1的个数:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

1.2 解题思路:通过位移来进行。举例:7(二进制:0111),7 >> 1(得到:0011),0011 & 0001 -> 1(通过 & 1来判断最后一位是否为1)。整数“7”每位移一次,就会将最右边的数字去掉,在最左边补一个0。那么,我们每次判断最右边去掉的是否为1,然后将其累计就可以得到整个二进制中1的个数。

1.3 代码:  

1 # -*- coding:utf-8 -*-
2 class Solution:
3     def NumberOf1(self, n):
4         # write code here
5         return sum([(n >> i & 1) for i in range(0,32)])

 

2.1 题目:数值的整数次方:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

2.2 解题思路:这个比较简单,python中可以调用pow()函数。

2.3 代码:

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def Power(self, base, exponent):
 4         # write code here
 5         if base == 0:
 6             return False
 7         elif base == 1 or exponent == 0:
 8             return 1
 9         elif exponent == 1:
10             return base
11         else:
12             return pow(base, exponent)

 

posted @ 2019-07-16 18:10  我叫郑小白  阅读(107)  评论(0编辑  收藏  举报