[LeetCode]560. Subarray Sum Equals K

暴力,哈希

Posted by JinFei on December 31, 2019

题目描述

Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.

Example 1:

Input:nums = [1,1,1], k = 2
Output: 2

Note:

The length of the array is in range [1, 20,000].
The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7].

暴力解题思路

  • 累加,从当前元素往后扫描,两重循环。

C++代码

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int size = nums.size();
        int count = 0, res = 0;
        for(int i = 0; i < size; i++){
            res = 0;
            for(int j = i; j < size; j++){
                res += nums[j];
                if(res == k){
                    count++;
                }
            }
        }
        return count;
    }
};

哈希解决方法

  • 累加,从当前元素往后扫描,两重循环。