Skip to content

Commit 1867c70

Browse files
add 1103
1 parent b3111c8 commit 1867c70

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ _If you like this project, please leave me a star._ ★
6363
|1170|[Compare Strings by Frequency of the Smallest Character](https://leetcode.com/problems/compare-strings-by-frequency-of-the-smallest-character/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1170.java) | |Easy||
6464
|1119|[Remove Vowels from a String](https://leetcode.com/problems/remove-vowels-from-a-string/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1119.java) | [:tv:](https://www.youtube.com/watch?v=6KCBrIWEauw)|Easy||
6565
|1108|[Defanging an IP Address](https://leetcode.com/problems/defanging-an-ip-address/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1108.java) | [:tv:](https://www.youtube.com/watch?v=FP0Na-pL0qk)|Easy||
66+
|1103|[Distribute Candies to People](https://leetcode.com/problems/distribute-candies-to-people/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1103.java) | |Easy|Math|
6667
|1099|[Two Sum Less Than K](https://leetcode.com/problems/two-sum-less-than-k/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1099.java) | [:tv:](https://www.youtube.com/watch?v=2Uq7p7HE0TI)|Easy||
6768
|1089|[Duplicate Zeros](https://leetcode.com/problems/duplicate-zeros/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1089.java) | |Easy||
6869
|1086|[High Five](https://leetcode.com/problems/high-five/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1086.java) | [:tv:](https://www.youtube.com/watch?v=3iqC5J4l0Cc)|Easy||
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.fishercoder.solutions;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
/**
7+
* 1103. Distribute Candies to People
8+
*
9+
* We distribute some number of candies, to a row of n = num_people people in the following way:
10+
* We then give 1 candy to the first person, 2 candies to the second person, and so on until we give n candies to the last person.
11+
* Then, we go back to the start of the row, giving n + 1 candies to the first person, n + 2 candies to the second person,
12+
* and so on until we give 2 * n candies to the last person.
13+
* This process repeats (with us giving one more candy each time, and moving to the start of the row
14+
* after we reach the end) until we run out of candies.
15+
* The last person will receive all of our remaining candies (not necessarily one more than the previous gift).
16+
* Return an array (of length num_people and sum candies) that represents the final distribution of candies.
17+
*
18+
* Example 1:
19+
* Input: candies = 7, num_people = 4
20+
* Output: [1,2,3,1]
21+
* Explanation:
22+
* On the first turn, ans[0] += 1, and the array is [1,0,0,0].
23+
* On the second turn, ans[1] += 2, and the array is [1,2,0,0].
24+
* On the third turn, ans[2] += 3, and the array is [1,2,3,0].
25+
* On the fourth turn, ans[3] += 1 (because there is only one candy left), and the final array is [1,2,3,1].
26+
*
27+
* Example 2:
28+
* Input: candies = 10, num_people = 3
29+
* Output: [5,2,3]
30+
* Explanation:
31+
* On the first turn, ans[0] += 1, and the array is [1,0,0].
32+
* On the second turn, ans[1] += 2, and the array is [1,2,0].
33+
* On the third turn, ans[2] += 3, and the array is [1,2,3].
34+
* On the fourth turn, ans[0] += 4, and the final array is [5,2,3].
35+
*
36+
* Constraints:
37+
* 1 <= candies <= 10^9
38+
* 1 <= num_people <= 1000
39+
* */
40+
public class _1103 {
41+
public static class Solution1 {
42+
public int[] distributeCandies(int candies, int num_people) {
43+
Map<Integer, Integer> map = new HashMap<>();
44+
int candy = 1;
45+
while (candies > 0) {
46+
for (int person = 1; person <= num_people && candies > 0; person++, candy++) {
47+
if (candies < candy) {
48+
map.put(person, map.getOrDefault(person, 0) + candies);
49+
candies -= candy;
50+
break;
51+
} else {
52+
map.put(person, map.getOrDefault(person, 0) + candy);
53+
candies -= candy;
54+
}
55+
}
56+
}
57+
int[] result = new int[num_people];
58+
for (int i = 1; i <= num_people; i++) {
59+
if (map.containsKey(i)) {
60+
result[i - 1] = map.get(i);
61+
} else {
62+
result[i - 1] = 0;
63+
}
64+
}
65+
return result;
66+
}
67+
}
68+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.solutions._1103;
4+
import org.junit.BeforeClass;
5+
import org.junit.Test;
6+
7+
import static org.junit.Assert.assertArrayEquals;
8+
9+
public class _1103Test {
10+
private static _1103.Solution1 solution1;
11+
12+
@BeforeClass
13+
public static void setup() {
14+
solution1 = new _1103.Solution1();
15+
}
16+
17+
@Test
18+
public void test1() {
19+
assertArrayEquals(new int[]{1, 2, 3, 1}, solution1.distributeCandies(7, 4));
20+
}
21+
22+
@Test
23+
public void test2() {
24+
assertArrayEquals(new int[]{5, 2, 3}, solution1.distributeCandies(10, 3));
25+
}
26+
27+
@Test
28+
public void test3() {
29+
assertArrayEquals(new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 5, 0, 0, 0, 0, 0}, solution1.distributeCandies(600, 40));
30+
}
31+
32+
}

0 commit comments

Comments
 (0)