簡體   English   中英

在指定長度的O(n ^ 2)下的正整數列表中找到子列表的最大和數Python 3.5

[英]Find maximum sum of sublist in list of positive integers under O(n^2) of specified length Python 3.5

對於我的編程問題之一,我需要定義一個函數,該函數接受兩個變量,即長度為l的列表和整數w。 然后,我必須找到列表中長度為w的子列表的最大和。

條件:

1 <= W <= 1 <= 10萬

列表中的每個元素的范圍是[1,100]

目前,我的解決方案在O(n ^ 2)(如果我錯了,請糾正我,下面的代碼)中工作,自動分級機不接受,因為我們需要找到一個更簡單的解決方案。

我的代碼:

def find_best_location(w, lst):
    best = 0
    n = 0
    while n <= len(lst) - w:
        lists = lst[n: n + w]
        cur = sum(lists)
        best = cur if cur>best else best
        n+=1

    return best

如果有人能夠找到更有效的解決方案,請告訴我! 另外,如果我錯誤地計算了big-O表示法,請也告訴我!

提前致謝!

1)找到和current第一的w元素,將其分配到best
2)從i = wcurrent = current + lst[i]-lst[iw]best = max(best, current)
3)完成。

您的解決方案的確是O(n^2) (或者,如果您想更嚴格地限制,則為O(n*W)

您可以通過創建aux數組sums在O(n)中執行以下操作:

sums[0] = l[0]
sums[i] = sums[i-1] + l[i]

然后,通過迭代並檢查sums[i] - sums[iW]您可以在線性時間內找到解決方案

您甚至可以即時計算sums數組以減少空間復雜性,但是如果您是我,我將從它開始,然后看看是否可以升級我的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM