- Related Questions & Answers
- 10 Interesting Python Cool Tricks
- howdoi in Python
- How to print without newline in Python?
- How to download Google Images using Python
- How to clear screen in python?
- get() method for dictionaries in Python
- Generating random number list in Python
- gcd() function Python
- frozenset() in Python
- floor() and ceil() function Python
- float() in Python
- Finding Mean, Median, Mode in Python without Libraries
- Find the k most frequent words from data set in Python
- Find size of a list in Python
- Find length of a string in python (3 ways)

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

Suppose we want to distribute some number of candies to a row of n people in the following way −

- We then give 1 candy to the first people, 2 candies to the second people, and so on until we give n candies to the last people.
- After that, we go back to the start of the row again, give n + 1 candies to the first people, n + 2 candies to the second people, and so on until we give 2 * n candies to the last people.

We will repeat this process until we run out of candies. The last people will get all of our remaining candies (not necessarily one more than the previous gift).

We have to return an array that represents the final distribution of candies. So suppose candies are 7, and n = 3, then the output will be [2, 2, 3]. So at first the first person will get 1. the array is [1, 0, 0], second one has got 2, then array is [1, 2, 0], third one has got 3, then array is [1, 2, 3], and finally first one again got 1, so array is [2, 2, 3]

To solve this, we will follow these steps −

- res is an array of n elements, and fill with 0
- index := 0
- while candies > 0
- res[index mod n] := res[index mod n] + min of candies and index + 1
- candies := candies – 1
- index := index + 1

- return res

Let us see the following implementation to get better understanding −

class Solution(object): def distributeCandies(self, candies, num_people): """ :type candies: int :type num_people: int :rtype: List[int] """ res = [0 for i in range(num_people)] index = 0 while candies>0: res[index%num_people] += min(candies,index+1) candies-=(index+1) index+=1 return res

7 3

[2,2,3]

Advertisements