-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbinaryWatch.js
More file actions
39 lines (38 loc) · 1.5 KB
/
binaryWatch.js
File metadata and controls
39 lines (38 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
////////////////////////////////////////////////Binary Watch///////////////////////////////////////////
// A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom represent the minutes
// (0-59). Each LED represents a zero or one, with the least significant bit on the right.
// For example, the below binary watch reads "4:51".
// Given an integer turnedOn which represents the number of LEDs that are currently on, return all possible times the
// watch could represent. You may return the answer in any order.
// The hour must not contain a leading zero.
// For example, "01:00" is not valid. It should be "1:00".
// The minute must be consist of two digits and may contain a leading zero.
// For example, "10:2" is not valid. It should be "10:02".
// Example 1:/
// Input: turnedOn = 1
// Output: ["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]
// Example 2:
//
// Input: turnedOn = 9
// Output: []
/**
* @param {number} turnedOn
* @return {string[]}
*/
const readBinaryWatch = function(turnedOn) {
const res = [];
for (let h = 0; h < 12; h++) {
for (let m = 0; m < 60; m++) {
const sec = Number(h * 64 + m)
.toString(2)
.split('')
.filter(d => d === '1').length;
if (sec === turnedOn){
res.push(m < 10 ? `${h}:0${m}` : `${h}:${m}`);
}
}
}
return res;
};
// console.log(readBinaryWatch(1));
// console.log(readBinaryWatch(9));