leetcode 算法题949 (简单250) 给定数字能组成的最大时间
- 题目介绍
给定一个由 4 位数字组成的数组,
返回可以设置的符合 24 小时制的最大时间。
最小的 24 小时制时间是 00:00,而最大的是 23:59。
从 00:00 (午夜)开始算起,
过得越久,时间越大。
以长度为 5 的字符串返回答案。
如果不能确定有效时间,
则返回空字符串。
- 示例
输入:[1,2,3,4]
输出:“23:41”
输入:[5,5,5,5]
输出:""
- 提示
A.length == 4
0 <= A[i] <= 9
- 解法一
/**
* @param {number[]} A
* @return {string}
*/
var largestTimeFromDigits = function(A) {
let dicts = [
[0, 1, 2, 3],
[0, 1, 3, 2],
[0, 2, 1, 3],
[0, 2, 3, 1],
[0, 3, 1, 2],
[0, 3, 2, 1],
[1, 0, 2, 3],
[1, 0, 3, 2],
[1, 2, 0, 3],
[1, 2, 3, 0],
[1, 3, 0, 2],
[1, 3, 2, 0],
[2, 0, 1, 3],
[2, 0, 3, 1],
[2, 1, 0, 3],
[2, 1, 3, 0],
[2, 3, 0, 1],
[2, 3, 1, 0],
[3, 0, 1, 2],
[3, 0, 2, 1],
[3, 1, 0, 2],
[3, 1, 2, 0],
[3, 2, 0, 1],
[3, 2, 1, 0]
], max = '', i = 0;
while(i < dicts.length) {
max = getMaxTime(max, A, dicts[i++]);
}
return max;
};
const getMaxTime = (max, A, dict) => {
console.log(dict)
let m = A[dict[0]] + '' + A[dict[1]], s = A[dict[2]] + '' + A[dict[3]];
if(m > "23" || s > "59") {
return max;
}
let time = m + ':' + s;
return max > time ? max : time;
}
执行用时 : 164 ms, 在所有 JavaScript 提交中击败了6.45%的用户
内存消耗 : 41.9 MB, 在所有 JavaScript 提交中击败了9.09%的用户
- 解法二
/**
* @param {number[]} A
* @return {string}
*/
var largestTimeFromDigits = function(A) {
let i = 0, max = '';
while(i < 4) {
let j = 0;
while(j < 4) {
if(i === j) {
j++;
continue;
}
let x = 0;
while(x < 4) {
if(x === i || x === j) {
x++;
continue;
}
let y = 6 - i - j - x;
max = getMaxTime(max, A, [i, j, x, y]);
x++;
}
j++;
}
i++;
}
return max;
}
const getMaxTime = (max, A, dict) => {
let m = A[dict[0]] + '' + A[dict[1]],
s = A[dict[2]] + '' + A[dict[3]];
if (m > "23" || s > "59") {
return max;
}
let time = m + ':' + s;
return max > time ? max : time;
}
执行用时 : 76 ms, 在所有 JavaScript 提交中击败了93.55%的用户
内存消耗 : 35.3 MB, 在所有 JavaScript 提交中击败了18.18%的用户