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
}

浙公网安备 33010602011771号