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