在 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
热门推荐
6 足球队祝福语简短
9 送蛇的祝福语简短
10 喜得孙子祝福语简短独特
11 群里祝福语简短幽默
12 婚礼祝福语简短精辟的
13 航空公司祝福语简短
14 月子小孩祝福语大全简短
15 聚餐会祝福语简短
16 祝福语诗意文案简短
17 团队文案祝福语简短励志
18 比赛结束花束祝福语简短