Python 中如何分配糖果
假設我們想以以下方式將一些糖果分發給一行 n 個人:
- 我們先給第一個人 1 顆糖果,第二個人 2 顆糖果,以此類推,直到給最後一個人 n 顆糖果。
- 然後,我們回到行的開頭,給第一個人 n + 1 顆糖果,第二個人 n + 2 顆糖果,以此類推,直到給最後一個人 2 * n 顆糖果。
我們將重複此過程,直到糖果用完。最後一個人將獲得我們剩餘的所有糖果(不一定比之前的禮物多一顆)。
我們必須返回一個數組,該陣列表示糖果的最終分配情況。所以假設糖果是 7,n = 3,那麼輸出將是 [2, 2, 3]。所以一開始第一個人會得到 1。陣列是 [1, 0, 0],第二個得到了 2,那麼陣列是 [1, 2, 0],第三個得到了 3,那麼陣列是 [1, 2, 3],最後第一個人再次得到 1,所以陣列是 [2, 2, 3]
為了解決這個問題,我們將遵循以下步驟:
- res 是一個包含 n 個元素的陣列,並填充 0
- index := 0
- 當 candies > 0 時
- res[index mod n] := res[index mod n] + candies 和 index + 1 的最小值
- candies := candies – 1
- index := index + 1
- 返回 res
示例
讓我們看看下面的實現以更好地理解:
class Solution(object): def distributeCandies(self, candies, num_people): 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 ob1 = Solution() print(ob1.distributeCandies(8, 3))
輸入
8 3
輸出
[3, 2, 3]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP