0
点赞
收藏
分享

微信扫一扫

《前端面试题》- 编程题- 时间比较题

陆佃 2021-09-28 阅读 19

时间比较题: 输入一组时间字符串,求出这组时间中的间隔最小的时间差(分),如输入"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));
举报

相关推荐

0 条评论