时间比较题: 输入一组时间字符串,求出这组时间中的间隔最小的时间差(分),如输入"23:59", "00:00",返回1; 假设输入数组的长度大于2且小于2000;(本题可以写伪代码)
方法一:
function compareTime(arr) {
const newArr = arr.sort();
let result = [];
for (let i = 0; i < newArr.length; i++) {
let currentTime = {},
nextTime = {};
if (i !== newArr.length - 1) {
currentTime = getTime(newArr[i]);
nextTime = getTime(newArr[i + 1]);
const subTime = (nextTime.hour * 60 + nextTime.min) - (currentTime.hour * 60 + currentTime.min);
result.push(subTime);
} else {
currentTime = getTime(newArr[i]);
nextTime = getTime(newArr[0]);
if (nextTime.hour === '00') {
result.push((24 * 60 + nextTime.min) - (currentTime.hour * 60 + currentTime.min));
}
}
}
console.log(Math.min.apply(null, result));
}
function getTime(timeStr) {
const timeArr = timeStr.split(':');
return {
hour: parseInt(timeArr[0]),
min: parseInt(timeArr[1])
};
}
方法二(伪代码):
let result = [];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i; j++) {
result.push(arr[i].hour * 60 + arr[i].min - arr[j].hour * 60 - arr[j].min);
}
}
result.push((arr[0].hour + 24) * 60 + arr[i].min - arr[arr.length - 1].hour * 60 - arr[arr.length - 1].min);
console.log(Math.min.apply(null, result));