Skip to content

1904. 你完成的完整对局数 #33

Open
@zpc7

Description

@zpc7

1904. 你完成的完整对局数

function numberOfRounds(loginTime: string, logoutTime: string): number {
    //在 HH:00、HH:15、HH:30 和 HH:45 ,将会开始一个新的对局
    const [loginTimeHour, loginTimeMinute] = loginTime.split(':').map(Number);
    const [logoutTimeHour, logoutTimeMinute] = logoutTime.split(':').map(Number);
    // 统一转成分钟
    const loginStartMinute = loginTimeHour * 60 + loginTimeMinute;
    let logoutEndMinute = logoutTimeHour * 60 + logoutTimeMinute;
    // 特殊场景, finishTime 早于 startTime
    if (logoutEndMinute < loginStartMinute) {
        logoutEndMinute += 24 * 60;
    }
    // 分析
    // 13分钟....67分钟, 这个时间段中, 存在3个满足要求的对局: 15->30->45->60
    // 接着分析首尾的时间
    // 首: 13/15 向上取整是1 向下取整是0
    // 尾: 67/15 向上取整是5 向下取整是4
    // 如何对上我们的结果3呢, 就是要取:尾向下取整(4)-首向上取整(1) === 3
    // 特殊场景: 47...57 (区间差值小于15)
    // 首: 47/15 向上取整是4 向下取整是3
    // 尾: 57/15 向上取整是4 向下取整是3
    // 如果按照 3-4 === -1, 结果就不对,应该是0
    // 于是需要特殊处理
    const res = Math.floor(logoutEndMinute / 15) - Math.ceil(loginStartMinute / 15);
    return res === -1 ? 0 : res;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions