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
  • Learn & ask questions
Solved

splitArray  challenge

Posted on 2016-09-27
6
69 Views
Last Modified: 2016-10-17
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
Comment
Question by:gudii9
6 Comments
 
LVL 44

Accepted Solution

by:
AndyAinscow earned 167 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 53

Assisted Solution

by:Bill Prew
Bill Prew earned 167 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

by:phoffric
phoffric earned 166 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.

Taking one of your examples..
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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Properties of numbers 14 57
throw exception 21 58
Bot application - advice 3 38
maven not picking latest jar instead picking old jar from .m2 12 18
We are taking giant steps in technological advances in the field of wireless telephony. At just 10 years since the advent of smartphones, it is crucial to examine the benefits and disadvantages that have been report to us.
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

861 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question