leetcode1010-总持续时间可被60整除的歌曲

题目描述

  • 若干个数,选两个组合,能凑成 60 的倍数就计一对,问有几对

示例

输入:time = [30,20,150,100,40]
输出:3
解释:30 150, 20 100, 20 40
输入:time = [60,60,60]
输出:3

题解

  • 思路
    • 数组长度为 6w,暴力必超时
    • “找对象”,跟第一题《两数之和》很像,目标是找到 x,使得 当前数+x 是 60 的倍数,有多少个 x,就可以计多少对
    • 用数组记录这些 x 的个数
func numPairsDivisibleBy60(time []int) int {
    cnt := 0
    pairs := [60]int{}
    for _, v := range time {
        if v % 60 == 0 { cnt += pairs[0]
        } else { cnt += pairs[60 - v % 60] }
        pairs[v % 60] ++
    }
    return cnt
}
posted @ 2025-08-28 20:21  余越  阅读(6)  评论(0)    收藏  举报