计划使两两相邻资金Python中小

假设我们有一个非负数列表,例如nums和一个非负值k。现在假设我们可以执行在这里我们选择在NUMS单个正棕土和1。我们必须找到操作的最小数量减少它的操作所需使得列表中的总和在每对相邻值的<= K。如果答案很大,则返回结果mod 10 ^ 9 + 7。

因此,如果输入是像NUMS = [4,6,2,5]中,k = 6,则输出将是5,因为我们可以递减列表[3,3,1,4],这是一个总5个递减。这里的每一个相邻对的总和为<= 6。

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

  • m = 10 ^ 9 + 7

  • ANS:= 0

  • 对于i在范围为0〜NUMS的尺寸 -  1,做

    • NUMS第[i + 1]:= 0

    • SM:= NUMS [I] + NUMS第[i + 1]

    • diff:= sm-k和0的最大值

    • nums [i +1]:= nums [i +1]-diff

    • 如果nums [i + 1] <0,则

    • ans:= ans + diff

    • 返回ANS模m

    让我们看下面的实现以更好地理解-

    示例

    m = 10 ** 9 + 7
    class Solution:
       def solve(self, nums, k):
          ans = 0
          for i in range(0, len(nums) - 1):
             sm = nums[i] + nums[i + 1]
             diff = max(sm - k, 0)
             nums[i + 1] -= diff
             if nums[i + 1] < 0:
                nums[i + 1] = 0
             ans += diff
          return ans % m
    ob = Solution()
    nums = [4, 6, 2, 5]
    k = 6 print(ob.solve(nums, k))

    输入值

    [4, 6, 2, 5], 6

    输出结果

    5
    猜你喜欢