Skip to content

Commit 2f806a8

Browse files
author
techpanja
committed
O(N) solution for find pairs equal to sum.
1 parent c8c56f2 commit 2f806a8

3 files changed

Lines changed: 29 additions & 56 deletions

File tree

Lines changed: 26 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package arrays.findpairsequaltosum;
22

33
import java.util.ArrayList;
4+
import java.util.HashMap;
45
import java.util.List;
6+
import java.util.Map;
57

68
/**
79
* Write a program takes array input{1,0,2,3} and num =3.and
@@ -17,6 +19,9 @@ public class FindPairsEqualToSum {
1719

1820
private static int inputSum = 0;
1921

22+
/*
23+
* O(N power of 2) solution with O(1) space.
24+
* */
2025
public static List<String> findPairsForSum(int[] inputArray, int sum) {
2126
List<String> list = new ArrayList<String>();
2227
List<Integer> inputList = new ArrayList<Integer>();
@@ -27,65 +32,32 @@ public static List<String> findPairsForSum(int[] inputArray, int sum) {
2732
int tempInt = sum - i;
2833
if (inputList.contains(tempInt)) {
2934
String pair = String.valueOf(i + ", " + tempInt);
35+
System.out.print(i + ":" + tempInt + " , ");
3036
list.add(pair);
3137
}
3238
}
3339
return list;
3440
}
3541

36-
// public static List<String> findAllEqualToSum(int[] inputArray, int sum) {
37-
// inputSum = sum;
38-
// int currentIndex = 0;
39-
// List<String> outputList = new ArrayList<String>();
40-
// List<Integer> inputList = new LinkedList<Integer>();
41-
// for (int i : inputArray) {
42-
// inputList.add(i);
43-
// }
44-
// for (Integer currentInteger : inputList) {
45-
// findAllEqualToSum(currentIndex, inputList, "", currentInteger, outputList);
46-
//
47-
// }
48-
// return outputList;
49-
// }
50-
//
51-
// private static void findAllEqualToSum(int currentIndex, List<Integer> inputArray, String inputString, int counter, List<String> outputList) {
52-
// if (currentIndex == inputArray.size()) {
53-
// return;
54-
// }
55-
// counter = counter + inputArray.get(currentIndex);
56-
// inputString = inputString.concat(String.valueOf(inputArray.get(currentIndex))).concat(",");
57-
// if (counter == inputSum) {
58-
// outputList.add(inputString);
59-
// }
60-
// currentIndex++;
61-
// findAllEqualToSum(currentIndex, inputArray, inputString, counter, outputList);
62-
// }
63-
64-
// static void sum_up_recursive(ArrayList<Integer> numbers, int target, ArrayList<Integer> partial) {
65-
// int s = 0;
66-
// for (int x : partial) s += x;
67-
// if (s == target)
68-
// System.out.println("sum(" + Arrays.toString(partial.toArray()) + ")=" + target);
69-
// if (s >= target)
70-
// return;
71-
// for (int i = 0; i < numbers.size(); i++) {
72-
// ArrayList<Integer> remaining = new ArrayList<Integer>();
73-
// int n = numbers.get(i);
74-
// for (int j = i + 1; j < numbers.size(); j++) remaining.add(numbers.get(j));
75-
// ArrayList<Integer> partial_rec = new ArrayList<Integer>(partial);
76-
// partial_rec.add(n);
77-
// sum_up_recursive(remaining, target, partial_rec);
78-
// }
79-
// }
80-
//
81-
// static void sum_up(ArrayList<Integer> numbers, int target) {
82-
// sum_up_recursive(numbers, target, new ArrayList<Integer>());
83-
// }
84-
//
85-
// public static void main(String args[]) {
86-
// Integer[] numbers = {3, 9, 8, 4, 5, 7, 10, 2};
87-
// int target = 15;
88-
// sum_up(new ArrayList<Integer>(Arrays.asList(numbers)), target);
89-
// }
42+
/*
43+
* O(N) solution using additional space (map).
44+
* */
45+
public static List<String> findPairsForSumUsingMap(int[] inputArray, int sum) {
46+
List<String> output = new ArrayList<>();
47+
Map<Integer, Integer> map = new HashMap<>();
48+
for (int value : inputArray) {
49+
if (map.get(value) == null) {
50+
map.put(sum - value, value);
51+
} else {
52+
output.add(String.valueOf(map.get(value) + ',' + value) + " : ");
53+
System.out.print(String.valueOf(map.get(value)) + ":" + value + " , ");
54+
}
55+
}
56+
return output;
57+
}
9058

59+
public static void main(String args[]) {
60+
findPairsForSumUsingMap(new int[]{2, 4, 0, 1, -2}, 2);
61+
findPairsForSum(new int[]{2, 4, 0, 1, -2}, 2);
62+
}
9163
}

src/graphs/graph/AbstractGraph.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ protected AbstractGraph() {
3131

3232
@Override
3333
public List<Vertex> getVertexesAsList() {
34-
List<Vertex> vertexList = new ArrayList<Vertex>();
34+
List<Vertex> vertexList = new ArrayList<>();
3535
vertexList.addAll(Arrays.asList(getVertexesAsArray()));
3636
vertexList.removeAll(Collections.singleton(null));
3737
return vertexList;
@@ -61,7 +61,7 @@ public boolean addVertex(Vertex vertex) {
6161
}
6262

6363
protected boolean canAddVertex(Vertex vertex, List<Vertex> vList) {
64-
List<Vertex> vertexList = new ArrayList<Vertex>();
64+
List<Vertex> vertexList = new ArrayList<>();
6565
vertexList.addAll(vList);
6666
vertexList.removeAll(Collections.singleton(null));
6767
for (Vertex tempVertex : vertexList) {

src/graphs/test/TestDG.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ public static void main(String[] args) {
2525
graph.addEdge(vertex2, vertex3);
2626
graph.displayVertexList();
2727
graph.displayGraphDependency();
28+
graph.topoSortGraph();
2829
}
2930
}

0 commit comments

Comments
 (0)