Recently I gave the test for Amazon on Hacker-Earth. Only 2 programming questions were asked-
1. Connected Cells in a Grid
Given,
Matrix with m rows and n columns each of which contains either 1 or 0.
Two cells are said to be connected if they are adjacent to each other horizontally, vertically or diagonally. The connected and filled cells from a region. There may be several regions in the matrix.
Find the number of cells in the largest region in the matrix.
Sample Input
4
4
1 1 0 0
0 1 1 0
0 0 1 0
1 0 0 0
Sample Output
5
Explaination
X X 0 0
0 X X 0
0 0 X 0
1 0 0 0
where X indicate the largest connected component.
Solution:
2. The Maximum Subarray
Given an array A of N elements, find the maximum possible sum of a
Sample Input
2
4
1 2 3 4
6
2 -1 2 3 4 -5
Sample Output
10 10
10 11
Solution: http://ideone.com/XKz309
1. Connected Cells in a Grid
Given,
Matrix with m rows and n columns each of which contains either 1 or 0.
Two cells are said to be connected if they are adjacent to each other horizontally, vertically or diagonally. The connected and filled cells from a region. There may be several regions in the matrix.
Find the number of cells in the largest region in the matrix.
Sample Input
4
4
1 1 0 0
0 1 1 0
0 0 1 0
1 0 0 0
Sample Output
5
Explaination
X X 0 0
0 X X 0
0 0 X 0
1 0 0 0
where X indicate the largest connected component.
Solution:
import java.util.Scanner;
public class AmazonTest {
public static boolean[][] visited;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt();
int[][] inputElement = new int[M][N];
visited = new boolean[M][N];
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
inputElement[i][j] = sc.nextInt();
visited[i][j] = false;
}
}
int max = 0;
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
if(!visited[i][j]) max = Math.max(max, findZoneHelper(inputElement, i, j, 0, M, N));
}
}
System.out.println(max);
sc.close();
}
public static int findZoneHelper(int[][] grid, int i, int j, int count, int M, int N) {
if(i < 0 || j < 0 || i >= M || j >= N) return 0;
if(visited[i][j]) return 0;
visited[i][j] = true;
if(grid[i][j] == 0) return 0;
else return 1 +
findZoneHelper(grid, i-1, j-1, count, M, N) +
findZoneHelper(grid, i-1, j, count, M, N) +
findZoneHelper(grid, i-1, j+1, count, M, N) +
findZoneHelper(grid, i, j-1, count, M, N) +
findZoneHelper(grid, i, j, count, M, N) +
findZoneHelper(grid, i, j+1, count, M, N) +
findZoneHelper(grid, i+1, j-1, count, M, N) +
findZoneHelper(grid, i+1, j, count, M, N) +
findZoneHelper(grid, i+1, j+1, count, M, N);
}
}
2. The Maximum Subarray
Given an array A of N elements, find the maximum possible sum of a
- Contiguous subarray
- Non-contiguoug subarray
Sample Input
2
4
1 2 3 4
6
2 -1 2 3 4 -5
Sample Output
10 10
10 11
Solution: http://ideone.com/XKz309
No comments :
Post a Comment