Skip to content

Commit 7eddabc

Browse files
committed
Added array pair sum exercise.
1 parent 46936b8 commit 7eddabc

File tree

3 files changed

+122
-0
lines changed

3 files changed

+122
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package stringbasic.exercises;
2+
3+
import java.util.ArrayList;
4+
5+
/**
6+
* Finds pair in an array which sum equals to a given value
7+
*/
8+
public class ArrayPairSum<T> {
9+
10+
private int sum;
11+
12+
/**
13+
*
14+
* @param sum sum value to look for
15+
*/
16+
public ArrayPairSum(int sum) {
17+
this.sum = sum;
18+
}
19+
20+
public Pair[] getPairs(int[] elements) {
21+
ArrayList<Pair> results = new ArrayList<Pair>();
22+
for (int i = 0; i < elements.length; i++) {
23+
for (int j = i+1; j < elements.length; j++) {
24+
if (elements[i] + elements[j] == this.sum) {
25+
results.add(new Pair(elements[i], elements[j]));
26+
}
27+
}
28+
}
29+
30+
return results.toArray(new Pair[0]);
31+
}
32+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package stringbasic.exercises;
2+
3+
import java.util.Objects;
4+
5+
/**
6+
* Pair container for int elements
7+
*/
8+
public class Pair {
9+
10+
private int first;
11+
private int second;
12+
13+
public Pair() {
14+
15+
}
16+
17+
public Pair(int first, int second) {
18+
this.first = first;
19+
this.second = second;
20+
}
21+
22+
public int getFirst() {
23+
return first;
24+
}
25+
26+
public void setFirst(int first) {
27+
this.first = first;
28+
}
29+
30+
public int getSecond() {
31+
return second;
32+
}
33+
34+
public void setSecond(int second) {
35+
this.second = second;
36+
}
37+
38+
@Override
39+
public boolean equals(Object o) {
40+
if (this == o) return true;
41+
if (o == null || getClass() != o.getClass()) return false;
42+
Pair pair = (Pair) o;
43+
return getFirst() == pair.getFirst() &&
44+
getSecond() == pair.getSecond();
45+
}
46+
47+
@Override
48+
public int hashCode() {
49+
return Objects.hash(getFirst(), getSecond());
50+
}
51+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package stringbasic.exercises;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertArrayEquals;
6+
7+
public class ArrayPairSumTest {
8+
@Test
9+
public void testGetPairsEmpty() {
10+
ArrayPairSum arrayPairSum = new ArrayPairSum(10);
11+
Pair[] expected = new Pair[0];
12+
int[] emptyArray = {};
13+
assertArrayEquals("expecting empty array", expected, arrayPairSum.getPairs(emptyArray));
14+
}
15+
16+
@Test
17+
public void testGetPairsOnePair() {
18+
ArrayPairSum arrayPairSum = new ArrayPairSum(10);
19+
Pair[] expected = new Pair[] {new Pair(3,7)};
20+
int[] testArray = {1,6,3,5,7};
21+
assertArrayEquals("one pair expected", expected, arrayPairSum.getPairs(testArray));
22+
}
23+
24+
@Test
25+
public void testGetPairsMultiplePairs() {
26+
ArrayPairSum arrayPairSum = new ArrayPairSum(10);
27+
Pair[] expected = new Pair[] {new Pair(3,7), new Pair(6,4), new Pair(5,5)};
28+
int[] testArray = {3,1,6,4,5,7,5};
29+
assertArrayEquals("one pair expected", expected, arrayPairSum.getPairs(testArray));
30+
}
31+
32+
@Test
33+
public void testGetPairsNegativeNumbers() {
34+
ArrayPairSum arrayPairSum = new ArrayPairSum(10);
35+
Pair[] expected = new Pair[] {new Pair(-3,13), new Pair(24,-14), new Pair(5,5)};
36+
int[] testArray = {-3,1,24,-14,5,13,5};
37+
assertArrayEquals("one pair expected", expected, arrayPairSum.getPairs(testArray));
38+
}
39+
}

0 commit comments

Comments
 (0)