1665. 计算数字

1665. 计算数字

中文English

给出一个十进制数num,现在你需要把它转成二进制数,并返回1的个数和位置。

样例

例1:

输入: 10
输出: [2,1,3]
解释: 10转成2进制为1010,总共有2个1,所以ouptput数组第一个是2。然后1的位置是第1个和第3个,所以后续两个数为1,3.

例2:

输入: 7
输出: [3,1,2,3]
解释: 7转成2进制为111,总共有3个1,所以output数组第一个是3。然后的位置是第1个、第2个和第3个,所以后续三个数为1,2,3.

注意事项

n<=10^9

输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param num: the num
    @return: the array subject to the description
    """
    '''
    大致思路:
    1.转二进制[2:],取出1个个数,写入res里面,循环,依次将1的位置append到res里面,返回
    '''
    def calculateNumber(self, num):
        bin_num = bin(num)[2:]
        res = [bin_num.count('1')]
        for i in range(len(bin_num)):
            if bin_num[i] == '1':
                res.append(i+1)
        return  res

 

posted @ 2020-04-26 00:07  风不再来  阅读(245)  评论(0编辑  收藏  举报