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]

更新於: 2020年4月29日

1K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.