LeetCode Hot100_560. 和为k的子数组
题目链接:https://leetcode.cn/problems/subarray-sum-equals-k/?envType=study-plan-v2&envId=top-100-liked
暴力解法:
第一层循环左边界,第二层循环有边界,sum一直加,加到等于target就让cnt++。
public class Solution {
public int subarraySum(int[] nums, int k) {
int count = 0;
int len = nums.length;
for (int left = 0; left < len; left++) {
int sum = 0;
for (int right = left; right < len; right++) {
sum += nums[right];
if (sum == k) {
count++;
}
}
}
return count;
}
}
前缀和解法:
原来前缀和就是把i之前的数加起来哇,学会了
class Solution {
public int subarraySum(int[] nums, int k) {
int len = nums.length;
int[] preSum = new int[len+1];
int cnt = 0;
preSum[0] = 0;
for(int i = 1;i <= len;i++){
preSum[i] = preSum[i-1] + nums[i-1];
}
for(int i = 0;i < len;i++){
for(int j = i;j < len;j++){
if(preSum[j+1]-preSum[i] == k){
cnt++;
}
}
}
return cnt;
}
}

浙公网安备 33010602011771号