[英]Find the minimum values for each subarray and return the maximum of these minima
我試圖在數組 arr 中找到每個大小為 x 的子數組的最小值,返回一個表示這些最小值的最大值的整數。
這是我到目前為止所擁有的:
def segment(x, arr):
n = len(arr)
if (n < x):
return -1
res = 0
for i in range(x):
res += arr[i]
curr_sum = res
for i in range(x, n):
curr_sum += arr[i] - arr[i-x]
res = max(res, curr_sum)
return res
segment(2,[8,2,4])
Output = 10
Expected output = 2
有人可以幫我解決我所缺少的嗎? 我想我的代碼正在尋找最大和而不是最小子數組的最大值。
當大小x = 1
時它完美地工作。
謝謝。
我不太確定你問題的措辭。 我假設您的意思是arr
每個長度為x
連續子arr
。
所以在這個例子中, arr = [8,2,4]
所以你有子arr = [8,2,4]
[8,2]
和[2,4]
。 每個子數組的最小值為 2,因此最大值為 2。
def segment(x, arr):
n = len(arr)
if (n < x):
return -1
segment_mins = []
for i in range(n-x+1):
segment_mins.append(min(arr[i:i+x]))
return max(segment_mins)
編輯:您可以通過在一行中執行來實現加速
def segment(x, arr):
n = len(arr)
if (n < x):
return -1
return max(min(arr[i:i+x]) for i in range(n-x+1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.