Skip to content

Commit 17e4d6d

Browse files
add 1013
1 parent 25b68c8 commit 17e4d6d

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Your ideas/fixes/algorithms are more than welcome!
2727

2828
| # | Title | Solutions | Time | Space | Video | Difficulty | Tag
2929
|-----|----------------|---------------|---------------|---------------|--------|-------------|-------------
30+
|1013|[Pairs of Songs With Total Durations Divisible by 60](https://leetcode.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1013.java) | O(n) | O(1) | |Easy|
3031
|1002|[Find Common Characters](https://leetcode.com/problems/find-common-characters/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1002.java) | O(n) | O(1) | |Easy|
3132
|999|[Available Captures for Rook](https://leetcode.com/problems/available-captures-for-rook/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_999.java) | O(1) | O(1) | |Easy|
3233
|997|[Find the Town Judge](https://leetcode.com/problems/find-the-town-judge/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_997.java) | O(n) | O(n) | |Easy|
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.fishercoder.solutions;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
/**
7+
* 1013. Pairs of Songs With Total Durations Divisible by 60
8+
*
9+
* In a list of songs, the i-th song has a duration of time[i] seconds.
10+
*
11+
* Return the number of pairs of songs for which their total duration in seconds is divisible by 60.
12+
* Formally, we want the number of indices i < j with (time[i] + time[j]) % 60 == 0.
13+
*
14+
* Example 1:
15+
* Input: [30,20,150,100,40]
16+
* Output: 3
17+
* Explanation: Three pairs have a total duration divisible by 60:
18+
* (time[0] = 30, time[2] = 150): total duration 180
19+
* (time[1] = 20, time[3] = 100): total duration 120
20+
* (time[1] = 20, time[4] = 40): total duration 60
21+
*
22+
* Example 2:
23+
* Input: [60,60,60]
24+
* Output: 3
25+
* Explanation: All three pairs have a total duration of 120, which is divisible by 60.
26+
*
27+
* Note:
28+
*
29+
* 1 <= time.length <= 60000
30+
* 1 <= time[i] <= 500
31+
* */
32+
public class _1013 {
33+
public static class Solution1 {
34+
/**Credit: https://leetcode.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/discuss/256726/Java-O(n)-code-w-comment-similar-to-Two-Sum
35+
*
36+
* Think of Problem 1: Two Sum
37+
* Assume target is 60, each item in time % 60.
38+
* Then this problem becomes very similar to Problem 1.
39+
* */
40+
public int numPairsDivisibleBy60(int[] time) {
41+
int result = 0;
42+
Map<Integer, Integer> map = new HashMap<>();
43+
for (int t : time) {
44+
int d = (60 - t % 60) % 60;
45+
if (map.containsKey(d)) {
46+
result += map.get(d);
47+
}
48+
map.put(t % 60, map.getOrDefault(t % 60, 0) + 1);
49+
}
50+
return result;
51+
}
52+
}
53+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.solutions._1013;
4+
import org.junit.BeforeClass;
5+
import org.junit.Test;
6+
7+
import static org.junit.Assert.assertEquals;
8+
9+
public class _1013Test {
10+
private static _1013.Solution1 solution1;
11+
private static int[] time;
12+
13+
@BeforeClass
14+
public static void setup() {
15+
solution1 = new _1013.Solution1();
16+
}
17+
18+
@Test
19+
public void test1() {
20+
time = new int[]{30, 20, 150, 100, 40};
21+
assertEquals(3, solution1.numPairsDivisibleBy60(time));
22+
}
23+
24+
@Test
25+
public void test2() {
26+
time = new int[]{60, 60, 60};
27+
assertEquals(3, solution1.numPairsDivisibleBy60(time));
28+
}
29+
30+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy