Python程式:計算支付給所有優秀員工的最低金額


假設我們有一個名為ratings的數字列表,它顯示了程式設計師的績效分數。現在,經理想要給每個程式設計師1000盧比,但如果兩個程式設計師相鄰,他們希望支付給績效較好的程式設計師的金額至少比績效較差的程式設計師高1000盧比。我們必須找到經理可以支付的最低金額。

因此,如果輸入類似於ratings = [1, 2, 5, 1],則輸出將為7000,因為我們可以為每個程式設計師支付的最低金額分別為[1000, 2000, 3000, 1000]

為了解決這個問題,我們將遵循以下步驟:

  • pay := 一個與ratings大小相同的列表,最初所有值都為1

  • 對於範圍從1到ratings大小減1的i,執行以下操作:

    • 如果ratings[i] > ratings[i-1],則

      • pay[i] := pay[i-1]+1

  • 對於範圍從ratings大小減2到0的i,遞減1,執行以下操作:

    • 如果ratings[i] > ratings[i+1],則

      • pay[i] := pay[i]和pay[i+1]+1中的最大值

  • 返回(pay元素之和) * 1000

讓我們看看下面的實現,以便更好地理解:

示例

 線上演示

class Solution:
   def solve(self, ratings):
      pay=[1 for _ in ratings]
      for i in range(1, len(ratings)):
         if ratings[i] > ratings[i-1]:
            pay[i] = pay[i-1]+1
      for i in range(len(ratings)-2,-1,-1):
         if ratings[i] > ratings[i+1]:
         pay[i] = max(pay[i], pay[i+1]+1)
      return sum(pay)*1000
ob = Solution()
ratings = [1, 2, 5, 1]
print(ob.solve(ratings))

輸入

[1, 2, 5, 1]

輸出

7000

更新於:2020年10月8日

309次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告