Python中的K前缀

假设我们有一个数字nums和一个整数k的列表,我们必须找到最大可能的i,其中nums [0] + nums [1] + ... + nums [i]≤k。如果不存在有效的i,我们将返回-1。

因此,如果输入像nums = [4,-7,5,2,6],k = 5,则输出将为3,索引为3,就像我们加4 +(-7)+5+ 2 = 4,它小于k,如果我们添加最后一个元素,它将不再小于k,因此索引为3。

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

  • 对于范围从1到nums的i-1,执行

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

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

    • 还给我

    • 如果nums [i] <= k,则

  • 返回-1

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

示例

class Solution:
   def solve(self, nums, k):
      for i in range(1,len(nums)):
         nums[i]+=nums[i-1]
         for i in range(len(nums)-1,-1,-1):
            if nums[i]<=k:
                return i
      return -1
ob = Solution()
nums = [4, -7, 5, 2, 6]
k = 5
print(ob.solve(nums, k))

输入值

[4, -7, 5, 2, 6], 5

输出结果

3