|
| 1 | +packagecom.fishercoder.solutions; |
| 2 | + |
| 3 | +importjava.util.HashMap; |
| 4 | +importjava.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 | +publicclass_1103 { |
| 41 | +publicstaticclassSolution1 { |
| 42 | +publicint[]distributeCandies(intcandies,intnum_people) { |
| 43 | +Map<Integer,Integer>map =newHashMap<>(); |
| 44 | +intcandy =1; |
| 45 | +while (candies >0) { |
| 46 | +for (intperson =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 =newint[num_people]; |
| 58 | +for (inti =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 | +returnresult; |
| 66 | + } |
| 67 | + } |
| 68 | +} |