911. Maximum Size Subarray Sum Equals k
int maxSubArrayLen(vector<int> &nums, int k) {
// Write your code here
const int size = nums.size();
unordered_map<int, int> mp;
int sum = 0;
int maxLen = 0;
for(int i = 0; i < size; i++){
sum += nums[i];
if(sum == k){ //key1 单独处理sum 等于k的情况
maxLen = max(maxLen, i + 1);
}
if(mp.find(sum - k) != mp.end()){
maxLen = max(maxLen, i - mp[sum - k]);
}
if(mp.find(sum) == mp.end()){ //key2 保持mp[sum] 的index是小值。只在sum不在mp里时,才更新
mp[sum] = i;
}
}
return maxLen;
}
Comments
Post a Comment