该程序查找需要支付给所有表现良好的Python的最低金额

假设我们给出了一个称为等级的数字列表,它显示了编码员的性能得分。现在,经理希望给每个编码器1000卢比,除非两个编码器相邻,他们希望向性能更好的编码器支付至少比性能较差的编码器至少高1000卢比。我们必须找到经理可以按照上述限制支付的最低金额。

因此,如果输入像等级= [1、2、5、1],那么输出将是7000,因为我们可以为每个编码器支付的最小值是[1000、2000、3000、1000]

为了解决这个问题,我们将遵循以下步骤-

  • pay:=与等级相同的尺寸列表,最初所有值均为1

  • 对于范围在1到评级大小范围内的我-1

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

    • 如果等级[i]>等级[i-1],则

    • 对于等级范围为-2到0的i,将其减小1,

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

      • 如果收视率[i]>收视率[i + 1],则

    • 回报(工资要素之和)* 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
    猜你喜欢