Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
zpc7 opened this issue Aug 17, 2022 · 0 comments
Open

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

zpc7 opened this issue Aug 17, 2022 · 0 comments
Labels
数学 模拟 简单 LeetCode 难度定级

Comments

@zpc7
Copy link
Owner

zpc7 commented Aug 17, 2022

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;
};
@zpc7 zpc7 added 简单 LeetCode 难度定级 模拟 数学 labels Aug 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
数学 模拟 简单 LeetCode 难度定级
Projects
None yet
Development

No branches or pull requests

1 participant