# 1013. Partition Array Into Three Parts With Equal Sum 将数组分成和相等的三个部分

@TOC

## # 题目描述

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`.

Example 1:

``````Input: [30,20,150,100,40]
Output: 3
Explanation: Three pairs have a total duration divisible by 60:
(time[0] = 30, time[2] = 150): total duration 180
(time[1] = 20, time[3] = 100): total duration 120
(time[1] = 20, time[4] = 40): total duration 60
``````

Example 2:

``````Input: [60,60,60]
Output: 3
Explanation: All three pairs have a total duration of 120, which is divisible by 60.
``````

Note:

1. `1 <= time.length <= 60000`
2. `1 <= time[i] <= 500`

## # 解题方法

Python代码如下：

``````class Solution(object):
def numPairsDivisibleBy60(self, time):
"""
:type time: List[int]
:rtype: int
"""
count = collections.Counter(time)
key = list(count.keys())
N = len(key)
res = 0
for i, t in enumerate(key):
for j in range(i, N):
if (t + key[j]) % 60 == 0:
if i == j:
res += count[t] * (count[t] - 1) / 2
else:
res += count[t] * count[key[j]]
return res
``````

## # 日期

2019 年 3 月 21 日 —— 好久不刷题，重拾有点难