---
# System prepended metadata

title: "(Medium) 560.\tSubarray Sum Equals K"
tags: [leetcode]

---

# (Medium) 560.	Subarray Sum Equals K
## Run Code
![](https://i.imgur.com/7k0Go47.png)

## 題意
給一串陣列nums，要找出連續最長且加總等於k的所有符合的答案。
## 解題思路
用sum紀錄跑過的所有數的加總，然後放入map裡面，當下一個數在收尋時就可以直接從map裡面找是否有紀錄。
## 困難之處
因為題目給的陣列是從小排到大，所以find的function裡面放sum-k而不是k-sum。
## Code
```cpp=
class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int answer = 0;
        int sum = 0; 
        map<int,int> hashmap;
        for(int i=0;i<nums.size();i++){
            sum += nums[i];
            if(sum==k) answer++;
            if(hashmap.find(sum-k)!=hashmap.end())
                answer+=hashmap[sum-k];
            hashmap[sum]++;
        }
        return answer;
    }
};
```
###### tags: `leetcode`