Pairs of Songs With Total Durations Divisible by 60 LT1010
Posted taste-it-own-it-love-it
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pairs of Songs With Total Durations Divisible by 60 LT1010相关的知识,希望对你有一定的参考价值。
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.
Idea 1. Similar to Two Sum LT1, map with modular arithmetic
1 class Solution { 2 public int numPairsDivisibleBy60(int[] time) { 3 Map<Integer, Integer> record = new HashMap<>(); 4 int count = 0; 5 for(int val: time) { 6 val = val%60; 7 count += record.getOrDefault((60 - val)%60, 0); 8 record.put(val, record.getOrDefault(val, 0) + 1); 9 } 10 11 return count; 12 } 13 }
array used as map
1 class Solution { 2 public int numPairsDivisibleBy60(int[] time) { 3 int[] record = new int[60]; 4 int count = 0; 5 for(int val: time) { 6 val = val%60; 7 count += record[(60 - val)%60]; 8 ++record[val]; 9 } 10 11 return count; 12 } 13 }
Idea 1a. count pairs, preprose the array first
1 class Solution { 2 public int numPairsDivisibleBy60(int[] time) { 3 int[] record = new int[60]; 4 for(int val: time) { 5 val = val%60; 6 ++record[val]; 7 } 8 9 int count = 0; 10 if(record[0] > 0) { 11 count += record[0] * (record[0]-1)/2; 12 } 13 14 if(record[30] > 0) { 15 count += record[30] * (record[30]-1)/2; 16 } 17 18 for(int i = 1; i < 30; ++i) { 19 count += record[i]*record[60-i]; 20 } 21 return count; 22 } 23 }
Note:
1 <= time.length <= 60000
1 <= time[i] <= 500
以上是关于Pairs of Songs With Total Durations Divisible by 60 LT1010的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_easy_array1010. Pairs of Songs With Total Durations Divisible by 60
Leetcode-1013 Pairs of Songs With Total Durations Divisible by 60(总持续时间可被 60 整除的歌曲)
The Magic only works with total devtion of one's heart
英语句子 Spring is green with fiowers and songs.
373 Find K Pairs with Smallest Sums
[Daily Coding Problem 68] Count Pairs of attacking bishop pairs