在 Python 中找到一个好的子数组的最大分数的程序

假设我们有一个名为 nums 的数组和一个值 k。考虑子数组 (i, j) 的分数被定义为子数组 nums[i..j] * (j-i+1) 的最小值。现在,一个好的子数组是 i <= k <= j 的子数组。我们必须找到一个好的子数组的最大可能分数。

所以,如果输入像 nums = [2,5,4,8,5,6] k = 3,那么输出将是 20,因为最优子数组在这里是 (1, 5),所以最小的 nums[1 ..5] 是 4,所以 4*(5-1+1) = 20

示例

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

def solve(nums, k):

   ans = nums[k]

   minNum = nums[k]

   i = k

   j = k

   while i > -1 or j < len(nums):

      while i > -1 and nums[i] >= minNum:

         i -= 1

      while j < len(nums) and nums[j] >= minNum:

         j += 1

      ans = max(ans, (j - i - 1) * minNum)

      minNum = max(nums[i] if i > -1 else -1 , nums[j] if j <

len(nums) else -1)

   return ans

nums = [2,5,4,8,5,6]

k = 3

print(solve(nums, k))

输入

[2,5,4,8,5,6], 3
输出结果
20

以上是 在 Python 中找到一个好的子数组的最大分数的程序 的全部内容, 来源链接: utcz.com/z/357621.html

回到顶部