Equal sum of two arrays
Given tow arrays of integers, find a pair of values (one value from each array) that you can swap to give the two arrays the same sum.
Fact:
- Suppose sum of array 1 is Sum1 and sum of array 2 is Sum2
- then for a pair of element from each array x and y
- Sum1 – x + y = Sum2 + x – y
- i.e. Sum1 – Sum2 = 2x – 2y = 2(x-y)
- i.e. x – y = (Sum1 – Sum2) / 2
- So, the diff between both element is (Sum1 – Sum2) / 2
Algorithm:
- Find sum (sum1) of array1
- Find sum (sum2) of array2
- Calculate target = (sum1 – sum2) / 2
- Convert array2 to set2
- Iterate array1 from start to end
- Compute complement = array1[i] – target
- Look up complement element in set (i.e array2)
Latest Source Code:
Github: SumSwap.java
Output:
Array1: [4, 1, 2, 1, 1, 2] Array2: [3, 6, 3, 3] Sum Swap : Result{element1=4, element2=6}