Leetcode 最長累積和的子陣列

2021-10-09 10:30:09 字數 646 閱讀 2291

給定乙個無序陣列arr, 其中元素可正、可負、可0。給定乙個整數k,求arr所有子陣列中累加和為k的最長子陣列長度

示例1複製

[1,-2,1,1,1],0
複製

3
【思路】

採取,sum記錄前k專案的累積和,sum[i]=sum[i-1]+arr[i]

同時記錄下累積和為sum對應的下標 map[sum]=i

遍歷sum到第i個時,   當map.find(sum+k)存在時,即存在與當前點sum差值為k的累積和(可能拆分出一段子陣列)

ans=max(ans,mp[sum+k]-i)

結束以後,還需要討論一類情況,即sum中值為k的情況(從arr[0]開始的子陣列)

注意點:

#includeclass solution 

int ans=0;

for(int i=0;i}

//存在直接從0項開始累積和為k的

if(mp.find(k)!=mp.end())

ans=max(ans,mp[k]+1);

return ans;

}};

最長回文子串 LeetCode 五 最長回文子串

題目 最長回文子串 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。題目解析 回文?當回文串長度為奇數時,比如 北京計程車租出京北 當回文串長度為偶數的時候,比如 1221 以上兩種情況有乙個共同的特點就是有乙個中心,那在 中如何表示中心呢?class solution ...

leetCode 最長的上公升子串行

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10 9,2 5,3 7,101,18 輸出 4 解釋 最長的上公升子串行是 2,3,7,101 它的長度是 4。說明 可能會有多種最長上公升子串行的組合,你只需要輸出對應的長度即可。你演算法的時間複雜度應該為 o n2 高階 你能...

leetcode 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 中心拓展法 由乙個中心點開始向兩邊拓展,檢測邊界,判斷兩個值是否相等,相等則繼續拓展下去,檢測邊界。1....