求在給定的陣列中,子陣列中所有數加起來的和等於固定值 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 和等於...