# (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`