1 class Solution:
 2     def numPairsDivisibleBy60(self, time: 'List[int]') -> int:
 3         sums = 0
 4         s = {}
 5         n = len(time)
 6         if n>=20:
 7             targets = []
 8             for i in range(1,19):
 9                 targets.append(60*i)
10             for i in range(len(time)):
11                 cur = time[i]
12                 for tar in targets:
13                     cop = tar - cur
14                     if cop < 0:
15                         continue
16                     elif cop > 500:
17                         break
18                     elif cop in s.keys():
19                         sums += s[cop]
20                 if cur in s.keys():
21                     s.update({cur:s[cur]+1})
22                 else:
23                     s.update({cur:1})
24         else:
25             for i in range(len(time)):
26                 for j in range(i+1,len(time)):
27                     if (time[i]+time[j])%60==0:
28                         sums+=1
29         return sums

 下面这个是简写:

1 class Solution:
2     def numPairsDivisibleBy60(self, time: 'List[int]') -> int:
3         c = collections.Counter()
4         res = 0
5         for t in time:
6             res += c[-t % 60]
7             c[t % 60] += 1
8         return res

 

posted on 2019-03-17 14:15  Sempron2800+  阅读(113)  评论(0编辑  收藏  举报