401. 二进制手表

二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。

例如,下面的二进制手表读取 "3:25" 。

(图源:WikiMedia - Binary clock samui moon.jpg ,许可协议:Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) )

给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。

小时不会以零开头:

例如,"01:00" 是无效的时间,正确的写法应该是 "1:00" 。
分钟必须由两位数组成,可能会以零开头:

例如,"10:2" 是无效的时间,正确的写法应该是 "10:02" 。
 

示例 1:

输入:turnedOn = 1
输出:["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]
示例 2:

输入:turnedOn = 9
输出:[]

提示:

0 <= turnedOn <= 10

方法一: 二进制枚举法

class Solution:
    def readBinaryWatch(self, turnedOn: int) -> List[str]:
        # 二级制枚举法
        res = []
        for h in range(12):
            for m in range(60):
                # 判断小时1的个数 + 分钟1的个数 =  trunedOn -> 符合
                if str(bin(h)).count('1') + str(bin(m)).count('1') == turnedOn:
                    res.append(f'{h}:{m:02d}') # h如果1位无需补0, m需要补0
        
        return res

 

posted @ 2021-06-21 21:36  风不再来  阅读(99)  评论(0编辑  收藏  举报