假设我们给出了一个称为等级的数字列表,它显示了编码员的性能得分。现在,经理希望给每个编码器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