您的位置:首页 > 其它

leetcode之Counting Bits

2016-06-18 01:23 369 查看
这题是用来找出来一个数字化为2进制是有多少个1的,题目的提示很明显,就是要去找规律。规律其实很简单。就是2的n次方之后的都是1-2的n次方-1的值再加上1。难得写个能打败90%多的解。

class Solution(object):
def countBits(self, num):
"""
:type num: int
:rtype: List[int]
"""
if num == 0:
return [0]
if num == 1:
return [0, 1]
if num == 2:
return [0, 1, 1]
number = 1
list1 = [0, 1, 1]
for i in xrange(3, num + 1):
if i & (i - 1) == 0:
list1.append(1)
number += 1
else:
list1.append(list1[i - 2 ** number] + 1)
return list1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息