Problem Description:
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].
Analysis:
本题的思路就是用时间换空间吧,遍历整个数组,保存前面n个元素的和然后再一次求出每个元素的到前面位置的所有和,查看是否符合。代码如下:
Code:
class Solution {
public int subarraySum(int[] nums, int k) {
int res = 0;
for(int i = 0; i < nums.length; i++) {
if(i > 0)
nums[i] += nums[i - 1];
if(nums[i] == k) {
res += 1;
}
int j = i - 1;
while(j >= 0) {
if(nums[i] - nums[j] == k) {
res += 1;
}
j--;
}
}
return res;
}
}