using System.Collections.Generic;
public static void Main()
var res = SubarraySum(new int[] {1, 2, 3}, 3);
public static int SubarraySum(int[] nums, int k)
var dict = new Dictionary<int, int> { { 0, 1 } };
foreach (var num in nums)
count += dict.GetValueOrDefault(currentSum - k, 0);
if (!dict.TryAdd(currentSum, 1))