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

浙公网安备 33010602011771号