给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。
    示例 1 :

    1. 输入:nums = [1,1,1], k = 2
    2. 输出: 2 , [1,1] [1,1] 为两种不同的情况。

    说明 :

    1. 数组的长度为 [1, 20,000]。
    2. 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。

      1. class Solution {
      2. public:
      3. int subarraySum(vector<int>& nums, int k) {
      4. int res = 0;
      5. int sum = 0;
      6. unordered_map<int, int> hashMap{{0,1}};
      7. for(int num:nums){
      8. sum += num;
      9. res += hashMap[sum - k];
      10. hashMap[sum]++;
      11. }
      12. return res;
      13. }
      14. };
    class Solution {
    public:
        int subarraySum(vector<int>& nums, int k) {
            int sum =0;
            int res = 0;
            unordered_map<int,int> hashMap{{0,1}};
            for(int num:nums){
                sum += num;           
                res += hashMap[sum - k];
                hashMap[sum]++;
            }
            return res;
    
        }
    };