Comments (1)
题解
方法一:暴力法
/**
* @param {number} num
* @return {string[]}
*/
var readBinaryWatch = function(num) {
if (num == 0) return ["0:00"];
let result = [];
for (let i = 0; i < 12; i++) {
for (let j = 0; j < 60; j++) {
if (calcNumLight(i) + calcNumLight(j) == num) {
let str = `${i}:`;
if (j < 10) {
str += `0${j}`;
} else {
str += `${j}`;
}
result.push(str);
}
}
}
return result;
};
function calcNumLight(n) {
let result = 0;
while (n > 0) {
result += n % 2;
n = Math.floor(n / 2);
}
return result;
}
方法二:回溯
/**
* @param {number} num
* @return {string[]}
*/
var readBinaryWatch = function(num) {
if (num === 0) {
return ["0:00"];
}
const res = [];
let h = num < 4 ? num : 3,
m = num < 4 ? 0 : num - 3;
while (0 <= h) {
let hours = [];
let mins = [];
if (h < 4 && m < 6) {
hours = getBinarys(h, 4, new Set());
mins = getBinarys(m, 6, new Set());
}
for (const hh of hours) {
for (const mm of mins) {
res.push(`${hh}:${mm < 10 ? '0' + mm : mm}`);
}
}
h--;
m++;
}
return res;
};
function getBinarys(n, k, times) {
if (n === 0) {
return [0];
}
backtrack(new Array(k).fill(0), 0, n, times);
return [...times.values()];
}
function backtrack(arr, m, n, times) {
if (m === n) {
const num = parseInt(arr.join(''), 2);
const limit = arr.length < 6 ? 12 : 60;
if (num < limit) {
times.add(num);
}
}
for (let i = 0; i < arr.length; i++) {
if (arr[i]) continue;
arr[i] = 1;
backtrack(arr, m + 1, n, times);
arr[i] = 0;
}
}
from leetcode.
Related Issues (20)
- 217.存在重复元素 HOT 1
- 4.寻找两个正序数组的中位数 HOT 1
- 8.字符串转换整数 (atoi) HOT 1
- 237.删除链表中的节点 HOT 1
- 238.除自身以外数组的乘积 HOT 1
- 46.全排列 HOT 1
- 160.相交链表 HOT 1
- 61.旋转链表 HOT 1
- 2.两数相加 HOT 1
- 21.合并两个有序链表 HOT 1
- 92.反转链表 II HOT 1
- 206. 反转链表 HOT 1
- 146. LRU 缓存机制 HOT 1
- 94. 二叉树的中序遍历 HOT 1
- 235. 二叉搜索树的最近公共祖先 HOT 1
- 236. 二叉树的最近公共祖先 HOT 1
- 104. 二叉树的最大深度 HOT 1
- 111. 二叉树的最小深度 HOT 1
- 543. 二叉树的直径 HOT 1
- 124.二叉树中的最大路径和 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from leetcode.