1013. Pairs of Songs With Total Durations Divisible by 60

In a list of songs, the i-th song has a duration of time[i] seconds.
Return the number of pairs of songs for which their total duration in seconds is divisible by 60. Formally, we want the number of indices i < j with (time[i] + time[j]) % 60 == 0.

我开始想了最简单的,两个for循环,挨个遍历,但是超时了。。。
看了Discuss中的答案,使用一个数组(c[0] 表示余数为0的个数 ,c[1] 表示余数为1的个数。。。)

for (int t : time) {                 
            res += c[(60 - t % 60) % 60];    // 与t相加等于60的数量,就看此时c[(60 - t % 60) % 60]的值  
			//例:余数为1的,就看c[59]的值,余数为2的,就看c[58]的值...
            c[t % 60] += 1;
        }

后来还有一种做法,用到了HashMap,key存放余数i(0<= i <= 59),值存放 t%60=i 的个数,基本思想和上个解法是一样的,而且效率还没有数组的高!
自己还真的差很远呢,加油!坚持住!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值