11
11
*/
12
12
public class SearchInSorted2DArray {
13
13
14
+ /**
15
+ * Searches {@param value} in a square sized 2-D array {@param a} which is sorted
16
+ * both row wise and column wise.
17
+ * <p/>
18
+ * Time complexity: O(n) where n is size of 2-D array.
19
+ *
20
+ * @param a
21
+ * @param i
22
+ * @param j
23
+ * @param value
24
+ * @return
25
+ */
14
26
public static int [] search (int [][] a , int i , int j , int value ) {
15
-
16
- if (i == a .length && j == a [0 ].length && i == j && a [i ][j ] != value ) {
17
- return new int []{-1 , -1 };
27
+ for (int x = 0 ; x < a .length ; x ++) {
28
+ if (a [i ][x ] == value ) {
29
+ return new int []{i , x };
30
+ } else if (a [x ][j ] == value ) {
31
+ return new int []{x , j };
32
+ }
18
33
}
19
34
20
- if (a [i ][j ] == value ) {
21
- return new int []{i , j };
22
- } else if (a [i ][j ] < value && j < a [0 ].length - 1 && a [i ][j + 1 ] <= value ) {
23
- return search (a , i , j + 1 , value );
24
- } else if (a [i ][j ] < value && i < a .length - 1 && a [i + 1 ][j ] <= value ) {
25
- return search (a , i + 1 , j , value );
26
- } else if (a [i ][j ] > value && i > 0 ) {
27
- return search (a , i - 1 , j , value );
35
+ if (i < a .length - 1 ) {
36
+ return search (a , i + 1 , j + 1 , value );
28
37
} else {
29
38
return new int []{-1 , -1 };
30
39
}
@@ -42,10 +51,17 @@ private static void print2DMatrix(int[][] a) {
42
51
public static void main (String a []) {
43
52
int [][] ar = new int [][]{{1 , 2 , 3 }, {4 , 5 , 6 }, {7 , 8 , 9 }};
44
53
print2DMatrix (ar );
54
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 1 )));
55
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 2 )));
56
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 3 )));
45
57
System .out .println (Arrays .toString (search (ar , 0 , 0 , 4 )));
58
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 5 )));
46
59
System .out .println (Arrays .toString (search (ar , 0 , 0 , 6 )));
47
- System .out .println (Arrays .toString (search (ar , 0 , 0 , 1 )));
60
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 7 )));
48
61
System .out .println (Arrays .toString (search (ar , 0 , 0 , 8 )));
49
62
System .out .println (Arrays .toString (search (ar , 0 , 0 , 9 )));
63
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 10 )));
64
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 11 )));
65
+ System .out .println (Arrays .toString (search (ar , 0 , 0 , 12 )));
50
66
}
51
67
}
0 commit comments