在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
为了解决这个问题,我们将遵循以下步骤 –
- ans:= nums [k],minNum:=nums [k]
-
i:= k,j:= k
-
while i> -1或j
- while i> -1 and nums [i]> = minNum,执行
- i:= i-1
- while j = minNum,执行
- j:= j + 1
- ans:= ans和((j-i-1)* minNum)的最大值
-
minNum:=(nums [i] if i> -1 else -1)和(nums [j] if j
- while i> -1 and nums [i]> = minNum,执行
- 返回ans
示例
让我们看下面的实现以更好地理解