題目描述:
給定乙個陣列 nums 和乙個目標值 k,找到和等於 k 的最長子陣列長度。如果不存在任意乙個符合要求的子陣列,則返回 0。
注意:
nums 陣列的總和是一定在 32 位有符號整數範圍之內的。
示例 1:
輸入: nums = [1, -1, 5, -2, 3], k = 3
輸出: 4
解釋: 子陣列 [1, -1, 5, -2] 和等於 3,且長度最長。
示例 2:
輸入: nums = [-2, -1, 2, 1], k = 1
輸出: 2
解釋: 子陣列 [-1, 2] 和等於 1,且長度最長。
高階:
你能使時間複雜度在 o(n) 內完成此題嗎?
方法1:
主要思路:
(1)使用字首和,然後以 k 作為間隔,去找前面是否出現過對應的和即可;
class
solution
//當前和是否存在,若不存在,則新增,若存在,則跳過,因為之前新增的索引一定更小if(
!mp.
count
(sum_sub))}
return max_len;}}
;
LeetCode 和等於 k 的最長子陣列長度
q 給定乙個陣列 nums 和乙個目標值 k,找到和等於 k 的最長子陣列長度。如果不存在任意乙個符合要求的子陣列,則返回 0。注意 nums 陣列的總和是一定在 32 位有符號整數範圍之內的。示例 1 輸入 nums 1,1,5,2,3 k 3 輸出 4 解釋 子陣列 1,1,5,2 和等於 3,...
給定值k的最長子陣列長度
1 給定乙個陣列,值全是正數,請返回累加和為給定值k的最長子陣列長度。2 給定乙個陣列,值可以為正 負和0,請返回累加和為給定值k的最長子陣列長度。1 l和r都只能往右滑動,不會回退 初始化 l r 0 如果視窗內 l,r 的和小於k,r sum num r 如果和等於k,記錄視窗大小並視情況更新返...
和為aim的最長子陣列長度
求在給定的陣列中,子陣列中所有數加起來的和等於固定值 aim 的最長子陣列長度。準備乙個字典,key是從 1 位置到當前位置的累加和,value 是第一次得到這個累加和的位置。預設 1 位置的累加和是0.從頭開始遍歷陣列,每次都計算從 1 位置到當前位置的累加和是多少,並將位置資訊和 累加和存到字典...