Good afternoon! Here's our prompt for today.
We're given a set in the form of an array with a unique integers. Can you write a function that tells us whether it can be separated into two subsets whose elements have equal sums?
Here's an example: [5, 9, 7, 21]:

The below would return true because newSet can be divided into [5, 9, 7] and [21]. Both subsets sum to 21 and are equal.
JAVASCRIPT
1function hasEqualSubsets(arr) {
2  // fill
3}
4const newSet = [5, 7, 21, 9]
5
6console.log(hasEqualSubsets(newSet));   // trueAnd in another example, the below returns false since newSet cannot be divided into equal subsets.
JAVASCRIPT
1const newSet = [9, 3, 1]
2
3console.log(hasEqualSubsets(newSet));   // false
Constraints
- Length of the array <= 
1000 - The values will always contain integer values between 
-1000and1000 - The final answer will always fit in the integer value
 - Expected time complexity : 
O(n^2) - Expected space complexity : 
O(n^2) 
Try to solve this here or in Interactive Mode.
How do I practice this challenge?
xxxxxxxxxx56
    'PASSED: hasEqualSubsets([18,1,5,19,5,15,15,7,19,11,8,7,13]) should return false'var assert = require('assert');​function hasEqualSubsets(nums) {  // Fill in this method  return nums;}​try {  assert.deepEqual(hasEqualSubsets([14, 20, 9]), false);​  console.log('PASSED: ' + 'hasEqualSubsets([14,20,9]) should return false');} catch (err) {  console.log(err);}​try {  assert.deepEqual(hasEqualSubsets([3, 9, 5, 2, 9, 2, 8, 0, 11]), false);​  console.log(    'PASSED: ' + 'hasEqualSubsets([3,9,5,2,9,2,8,0,11]) should return false'  );} catch (err) {  console.log(err);}​try {  assert.deepEqual(hasEqualSubsets([8, 13, 12, 20, 10, 0, 17, 3, 4]), false);​  console.log(OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment
Here's our guided, illustrated walk-through.
How do I use this guide?
Access all course materials today
The rest of this tutorial's contents are only available for premium members. Please explore your options at the link below.

