1
1
package com .rampatra .arrays ;
2
2
3
- /**
4
- * Created by IntelliJ IDEA.
5
- *
6
- * @author: ramswaroop
7
- * @date: 5/18/15
8
- * @time: 10:24 PM
9
- */
10
-
11
3
import java .util .Arrays ;
12
- import java .util .HashMap ;
13
- import java .util .Map ;
4
+ import java .util .HashSet ;
5
+ import java .util .Set ;
14
6
15
7
/**
16
8
* Given an array ar[] of n numbers and
17
9
* another number x, determine whether or not there
18
10
* exists two elements in ar[] whose sum is exactly x.
11
+ *
12
+ * @author rampatra
13
+ * @since 5/18/15
19
14
*/
20
15
public class PairSum {
21
16
@@ -25,18 +20,18 @@ public class PairSum {
25
20
* then O(n^2) in worst case.
26
21
*
27
22
* @param ar
28
- * @param x
23
+ * @param sum
29
24
* @return
30
25
*/
31
- static boolean pairSum (int ar [] , int x ) {
26
+ static boolean pairSum (int [] ar , int sum ) {
32
27
Arrays .sort (ar );
33
28
34
29
int len = ar .length ;
35
30
36
31
for (int i = 0 , j = len - 1 ; i < j ; ) {
37
- if (ar [i ] + ar [j ] == x ) {
32
+ if (ar [i ] + ar [j ] == sum ) {
38
33
return true ;
39
- } else if (ar [i ] + ar [j ] < x ) { // approach towards larger elements
34
+ } else if (ar [i ] + ar [j ] < sum ) { // approach towards larger elements
40
35
i ++;
41
36
} else { // approach towards smaller elements
42
37
j --;
@@ -46,25 +41,30 @@ static boolean pairSum(int ar[], int x) {
46
41
}
47
42
48
43
/**
49
- * Using hashmap in O(n) time
44
+ * Using hashmap in O(n) time.
50
45
*
51
46
* @param ar
52
- * @param x
53
- * @param map
47
+ * @param sum
48
+ * @param numSet
54
49
* @return
55
50
*/
56
- static boolean pairSum (int ar [] , int x , Map <Integer , Integer > map ) {
51
+ static boolean pairSum (int [] ar , int sum , Set <Integer > numSet ) {
57
52
for (int i = 0 ; i < ar .length ; i ++) {
58
- if (map . containsKey ( x - ar [i ])) {
53
+ if (numSet . contains ( sum - ar [i ])) {
59
54
return true ;
60
55
}
61
- map . put (ar [i ], 1 );
56
+ numSet . add (ar [i ]);
62
57
}
63
58
return false ;
64
59
}
65
60
66
61
public static void main (String a []) {
67
62
System .out .println (pairSum (new int []{-3 , 4 , -6 , 1 , 1 }, -2 ));
68
- System .out .println (pairSum (new int []{-3 , 4 , -6 , 1 , 1 }, -2 , new HashMap <Integer , Integer >()));
63
+ System .out .println (pairSum (new int []{-3 , 4 , -6 , 1 , 1 }, 5 ));
64
+ System .out .println (pairSum (new int []{-3 , 4 , -6 , 1 , 1 }, 0 ));
65
+ System .out .println ("--------" );
66
+ System .out .println (pairSum (new int []{-3 , 4 , -6 , 1 , 1 }, -2 , new HashSet <>()));
67
+ System .out .println (pairSum (new int []{-3 , 4 , -6 , 1 , 1 }, 5 , new HashSet <>()));
68
+ System .out .println (pairSum (new int []{-3 , 4 , -6 , 1 , 1 }, 0 , new HashSet <>()));
69
69
}
70
70
}
0 commit comments