給定乙個無序陣列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....