我正在做這個練習
謝謝
uj5u.com熱心網友回復:
您的演算法的問題在于它以二次時間運行(即輸入陣列的大小O(n**2)在哪里n),而它可以以線性時間運行(即O(n))。關鍵是您要多次重新計算正確部分的總和。這效率不高,因為您只需要計算一次。您可以將累積總和存盤在另一個陣列中,以便以后不再重新計算(并在恒定時間內獲得正確的總和)。例如,您可以在開始時預先計算它,或者在需要時根據先前計算的總和進行迭代計算(請參閱動態規劃)。請注意,您可以使用Numpy函式輕松高效地計算累積總和numpy.cumsum。
實際上,更簡單的演算法是從左到右以相反的順序計算累積和,并將它們存盤在兩個不同的陣列中。然后,您可以通過從 0 到 n 的鎖步迭代兩個陣列來輕松找到答案,以檢查左側部分是否等于右側部分(不包括當前專案)。
uj5u.com熱心網友回復:
嘗試這個:
def pivotIndex(self, nums: List[int]) -> int:
for index in range(0, len(nums)):
if sum(nums[:index]) == sum(nums[index 1:]):
return index
return -1
我能得到的最好的,雖然不是很快。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346076.html
上一篇:帶有多個iframe的慢速頁面
