Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# splitArray  challenge

Posted on 2016-09-27
Medium Priority
122 Views
Hi,

I am working on below challenge
http://codingbat.com/prob/p185204

splitArray
prev  |  next  |  chance

Given an array of ints, is it possible to divide the ints into two groups, so that the sums of the two groups are the same. Every int must be in one group or the other. Write a recursive helper method that takes whatever arguments you like, and make the initial call to your recursive helper from splitArray(). (No loops needed.)

splitArray([2, 2]) → true
splitArray([2, 3]) → false
splitArray([5, 2, 3]) → true

I was not clear on how many elements each group should have? please advise
0
Question by:gudii9
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 44

Accepted Solution

AndyAinscow earned 668 total points (awarded by participants)
ID: 41818380
>>I was not clear on how many elements I should take for each group.

You need to take as many as you need for each group BUT you must use all given ints.
1

LVL 57

Assisted Solution

Bill Prew earned 668 total points (awarded by participants)
ID: 41820425
One FALSE case that is easy to identify is if the sum of all the integers in the input array sum up to an odd number then immediately return FALSE, since there would be no way way that two numbers added together could result in an odd number.  So for efficiency I might do that test up front.

Beyond that I'd be happy to comment on pseudo code of java once you get started on this, there area number of ways to attack it. You might get some inspiration from the following:

https://en.wikipedia.org/wiki/Partition_problem

~bp
1

LVL 32

Assisted Solution

phoffric earned 664 total points (awarded by participants)
ID: 41820683
If you are struggling to understand the Partition_problem link that Bill showed, do not take it to heart since "NP-hard problem" are one of the hardest type algorithms to understand in Computer Science.

As Bill pointed out, you know that if there is a solution then S = sum(all the integers) must be even. Now that you have established that, Let T = S/2. Now, if you can find a subset of the integers whose sum is T, then you are done, since the other integers not in your chosen subset must also have a sum equal to T (since the sum of both subsets must be 2*T, which is equal to S.

splitArray([5, 2, 3]) → true
S = 10 --> T = 10/2 = 5.
Since 5 is an element in the set of integers, it must be that the remaining elements not in the subset of {5} must sum up to 5. Check: {2,3} --> Sum is also 5 (no surprise). This is one of the simpler examples in determining the solution, since, in general, you cannot expect that the number T to appear in the set of integers.
1

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn different types of Android Layout and some basics of an Android App.
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
The viewer will learn how to implement Singleton Design Pattern in Java.