401. 二进制手表 javascript
题目:
二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。
例如,下面的二进制手表读取 “3:25” 。
给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。
小时不会以零开头:
例如,“01:00” 是无效的时间,正确的写法应该是 “1:00” 。
分钟必须由两位数组成,可能会以零开头:
例如,“10:2” 是无效的时间,正确的写法应该是 “10:02” 。
示例
输入:turnedOn = 1
输出:["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]
输入:turnedOn = 9
输出:[]
代码1 暴力破解
var readBinaryWatch = function(turnedOn) {
// 共有10个灯
var result = []
var hours = [["0"], ["1", "2", "4", "8"], ["3", "5", "6", "9", "10"], ["7", "11"]]
var minutes = [
["00"],
["01", "02", "04", "08", "16", "32"],
["03", "05", "06", "09", "10", "12", "17", "18", "20", "24", "33", "34", "36", "40", "48"],
["07", "11", "13", "14", "19", "21", "22", "25", "26", "28", "35", "37", "38", "41", "42", "44", "49","50", "52", "56"],
["15", "23", "27", "29", "30", "39", "43", "45", "46", "51", "53", "54", "57", "58"],
["31", "47", "55", "59"]
]
for (let i = 0; i <= Math.min(3, turnedOn); i++) {
if (turnedOn - i > 5) continue;
const hstr = hours[i];
const mstr = minutes[turnedOn - i];
for (let j = 0; j < hstr.length; j++) {
for (let k = 0; k < mstr.length; k++) {
result.push(hstr[j] + ":" + mstr[k]);
}
}
}
return result
};
学艺不精,还需努力💪