和為aim的最長子陣列長度

2021-10-07 01:15:57 字數 758 閱讀 6252

求在給定的陣列中,子陣列中所有數加起來的和等於固定值 aim 的最長子陣列長度。

準備乙個字典,key是從 -1 位置到當前位置的累加和,value 是第一次得到這個累加和的位置。預設 -1 位置的累加和是0.

從頭開始遍歷陣列,每次都計算從 -1 位置到當前位置的累加和是多少,並將位置資訊和 累加和存到字典中,如果乙個累加和出現多次,只記錄第一次出現這個累加和的位置,因為我們要求的是最長的子陣列。

當累加和減去 aim的差值出現在字典中時,表明該差值對應的位置的下乙個位置到當前位置,累加和滿足 aim,此時更新最長子陣列長度資訊。

def

maxlength

(arr, aim):if

len(arr)==0

:return

0 recoder =

sum=

0 res =

0 recoder[0]

=-1for i in

range

(len

(arr)):

sum+= arr[i]

ifsum

- aim in recoder.keys():

res =

max(res, i - recoder[

sum- aim])if

sumnot

in recoder.keys():

recoder[

sum]

= i return res

累加和為aim的最長子陣列

參考 擴充套件1乙個陣列中要麼是奇數,要麼是偶數,求奇數和偶數相等的最長子陣列。思路用1表示奇數,用 1表示偶數,那麼就是求累加和為0的最長子陣列,參考上面 擴充套件2求乙個陣列怎樣劃分可以使得子陣列異或為0的個數最多。思路動態規劃 定義乙個dp陣列,dp i 表示以 i 結尾可以劃分的最多個數 對...

最長子陣列長度(清華912)

在實現的過程中,要注意判斷角標不能越界,以及相等的數的判斷方法。program entrance exam description 求乙個陣列a中連續相同數字的和等於s的最長子陣列長度。如a s 3,則所求子陣列長度為 3.要求 演算法的時間複雜度不超過o n 空間複雜度不超過o 1 author ...

325 和等於 k 的最長子陣列長度

題目描述 給定乙個陣列 nums 和乙個目標值 k,找到和等於 k 的最長子陣列長度。如果不存在任意乙個符合要求的子陣列,則返回 0。注意 nums 陣列的總和是一定在 32 位有符號整數範圍之內的。示例 1 輸入 nums 1,1,5,2,3 k 3 輸出 4 解釋 子陣列 1,1,5,2 和等於...