diff --git a/LeetcodeProblems/Algorithms/Find_Subarrays_With_Equal_Sum.js b/LeetcodeProblems/Algorithms/Find_Subarrays_With_Equal_Sum.js new file mode 100644 index 0000000..3981e04 --- /dev/null +++ b/LeetcodeProblems/Algorithms/Find_Subarrays_With_Equal_Sum.js @@ -0,0 +1,51 @@ +/* +Find Subarrays With Equal Sum +https://leetcode.com/problems/find-subarrays-with-equal-sum/description/ + +Given a 0-indexed integer array nums, determine whether there exist two subarrays of length 2 with equal sum. Note that the two subarrays must begin at different indices. + +Return true if these subarrays exist, and false otherwise. + +A subarray is a contiguous non-empty sequence of elements within an array. + + + +Example 1: + +Input: nums = [4,2,4] +Output: true +Explanation: The subarrays with elements [4,2] and [2,4] have the same sum of 6. + + +Example 2: + +Input: nums = [1,2,3,4,5] +Output: false +Explanation: No two subarrays of size 2 have the same sum. + +Example 3: + +Input: nums = [0,0,0] +Output: true +Explanation: The subarrays [nums[0],nums[1]] and [nums[1],nums[2]] have the same sum of 0. +Note that even though the subarrays have the same content, the two subarrays are considered different because they are in different positions in the original array. +*/ + +/** + * @param {number[]} nums + * @return {boolean} + */ + var findSubarrays = function (nums) { + const sumsSeen = new Set(); + + for (let i = 0; i < nums.length - 1; i++) { + if (sumsSeen.has(nums[i] + nums[i + 1])) { + return true; + } + sumsSeen.add(nums[i] + nums[i + 1]); + } + + return false; +}; + +module.exports.findSubarrays = findSubarrays; diff --git a/LeetcodeProblemsTests/Algorithms/Find_Subarrays_With_Equal_Sum_Test.js b/LeetcodeProblemsTests/Algorithms/Find_Subarrays_With_Equal_Sum_Test.js new file mode 100644 index 0000000..09f692e --- /dev/null +++ b/LeetcodeProblemsTests/Algorithms/Find_Subarrays_With_Equal_Sum_Test.js @@ -0,0 +1,10 @@ +const assert = require('assert'); +const findSubarrays = require('../../LeetcodeProblems/Algorithms/Find_Subarrays_With_Equal_Sum').findSubarrays; + +var test = function () { + assert.equal(findSubarrays([4,2,4]), true); + assert.equal(findSubarrays([1,2,3,4,5]), false); + assert.equal(findSubarrays([0,0,0]), true); +} + +module.exports.test = test; diff --git a/README.md b/README.md index 673ad78..a46600f 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,8 @@ To run a specific problem in your console run `node ` (e.g. | [Construct Binary Tree from Preorder and Inorder Traversal ](/LeetcodeProblems/Algorithms/Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal.js) | Medium | https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ | | [Lowest Common Ancestor of a Binary Tree ](/LeetcodeProblems/Algorithms/Lowest_Common_Ancestor_of_a_Binary_Tree.js) | Medium | https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ | | [Maximum Sum of an Hourglass](/LeetcodeProblems/Algorithms/Maximise_Hour_Glass_Sum.js) | Medium | https://leetcode.com/problems/maximum-sum-of-an-hourglass/ | -| [Time Needed to Rearrange a Binary String] (/LeetcodeProblems/Algorithms/Time_Needed_Rearrange_Binary_String.js)| Medium | https://leetcode.com/problems/time-needed-to-rearrange-a-binary-string/ | +| [Time Needed to Rearrange a Binary String](/LeetcodeProblems/Algorithms/Time_Needed_Rearrange_Binary_String.js)| Medium | https://leetcode.com/problems/time-needed-to-rearrange-a-binary-string/ | +| [Find Subarrays With Equal Sum ](/LeetcodeProblems/Algorithms/Find_Subarrays_With_Equal_Sums.js) | Medium | https://leetcode.com/problems/find-subarrays-with-equal-sum/ | | [Flood Fill ](/LeetcodeProblems/Algorithms/Flood_Fill.js) | Easy | https://leetcode.com/problems/flood-fill/ | | [Implement stack using queues ](/LeetcodeProblems/Algorithms/Implement_stack_using_queues.js) | Easy | https://leetcode.com/problems/implement-stack-using-queues/ | | [Number of Segments in a String ](/LeetcodeProblems/Algorithms/Number_of_Segments_in_a_String.js) | Easy | https://leetcode.com/problems/number-of-segments-in-a-string/ |