网站建设能解决哪些问题,开发公司资质查询,金蝶软件公司,wordpress 登陆 没反应给你一个整数数组 nums 和一个整数 k #xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。 思路#xff1a;
sum: 当前位置的累积和。
如果以当前位置为结尾的数组中#xff0c;存在和为k的子数组#xff0c;那么#xff… 给你一个整数数组 nums 和一个整数 k 请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。 思路
sum: 当前位置的累积和。
如果以当前位置为结尾的数组中存在和为k的子数组那么一定存在更短的子数组和为sum - k。 使用一个循环遍历数组 nums。
a. 在每次循环中更新 sum 为当前位置的累积和即 sum nums[i]。
b. 检查 counts 中是否存在 sum - k如果存在将对应的频次加到 ans 中。
c. 将当前位置的累积和 sum 添加到 counts 中并更新其频次。
public class Solution {public int SubarraySum(int[] nums, int k) {int ans 0;IDictionaryint, int counts new Dictionaryint, int();counts.Add(0, 1);int sum 0;for(int i 0;i nums.Length; i){sum nums[i];int count counts.ContainsKey(sum - k) ? counts[sum - k] : 0;ans count;counts.TryAdd(sum,0);counts[sum];}return ans;}
}