From 0199c8c0b5f9b1b0ea212ca008d3f3efc6a3993d Mon Sep 17 00:00:00 2001 From: aI-Iab Date: Sun, 1 May 2022 09:24:05 +0200 Subject: [PATCH] C# solution for "Subarray Sum Equals K" problem Linear solution for https://leetcode.com/problems/subarray-sum-equals-k/ --- cs/SubarraySumEqualsK.cs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 cs/SubarraySumEqualsK.cs diff --git a/cs/SubarraySumEqualsK.cs b/cs/SubarraySumEqualsK.cs new file mode 100644 index 000000000..8c65f46e9 --- /dev/null +++ b/cs/SubarraySumEqualsK.cs @@ -0,0 +1,30 @@ +public class Solution { + public int SubarraySum(int[] nums, int k) { + Dictionary prefixSums = new Dictionary(); + int subarrayCount = 0; + int currentSum = 0; + int diff = 0; + + for(int i = 0; i < nums.Length; i++) { + currentSum += nums[i]; + + if(currentSum == k) { + subarrayCount++; + } + + diff = currentSum - k; + + if(prefixSums.ContainsKey(diff)) { + subarrayCount += prefixSums[diff]; + } + + if(!prefixSums.ContainsKey(currentSum)) { + prefixSums.Add(currentSum, 0); + } + + prefixSums[currentSum]++; + } + + return subarrayCount; + } +}