1010. 总持续时间可被60整除的歌曲(Python)

更多精彩内容,请关注【力扣简单题】

题目

难度:★★☆☆☆
类型:数组

在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。

返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i < j 且有 (time[i] + time[j]) % 60 == 0。

提示
1 <= time.length <= 60000
1 <= time[i] <= 500

示例

示例 1
输入:[30,20,150,100,40]
输出:3
解释:这三对的总持续时间可被 60 整数:
(time[0] = 30, time[2] = 150): 总持续时间 180
(time[1] = 20, time[3] = 100): 总持续时间 120
(time[1] = 20, time[4] = 40): 总持续时间 60

示例 2
输入:[60,60,60]
输出:3
解释:所有三对的总持续时间都是 120,可以被 60 整数。

解答

暴力求解无法通过,每一首歌曲的时间t对60取余得到结果r,r在计数器中出现的次数+1,不过在此之前,要先查看计数器中与当前歌曲互补的歌曲-t%60的数量,并添加到结果变量res中。

from collections import Counter

class Solution:
    def numPairsDivisibleBy60(self, time):
        """
        :param time: List[int]
        :return: int
        """
        c = Counter()
        res = 0
        for t in time:
            res += c[-t % 60]
            c[t % 60] += 1
        return res

如有疑问或建议,欢迎评论区留言~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容