I need to build a method in Java where the input is a 2D array of integers and get as a result a 2D array of integers where each element makes reference to a position of an element in a column. Let me explain that with an example. Consider as an input for the method a 2D arrays of 5x5 as follow:
int[][] array = new int[][]{
{124, 188, 24, 254, 339},
{0, 7, 77, 145, 159},
{206, 340, 280, 523, 433},
{310, 265, 151, 411, 398},
{24, 104, 0, 183, 198}};
Now I need to build a new 2D array of integer (I will call newArray
in the following) according to:
The minimum value of column 0 in the array is 0 and is associated with row 1 (then, I need to assign a 1 in newArray[0][0]
).
Next, the minimum value of column 0 in the array is 24 and is associated with row 4 (then, I need to assign a 4 in newArray[1][0]
).
Then, the minimum value of column 0 in the array is 124 and is associated with row 0 (then, I need to assign a 0 in newArray[2][0]
).
And so on for each column...
The final output of the method must be something like the following 2d array.
Any help would be highly appreciated.
If I understood correctly :
IN :
{{124, 188, 24, 254, 339},
{0, 7, 77, 145, 159},
{206, 340, 280, 523, 433},
{310, 265, 151, 411, 398},
{24, 104, 0, 183, 198}}
OUT :
{{1, 1, 4, 1, 1}
{4, 4, 0, 4, 4}
{0, 0, 1, 0, 0}
{2, 3, 3, 3, 3}
{3, 2, 2, 2, 2}
Here's the code :
public static int[][] createArray(int[][] a) {
int[][] nA = new int[a.length][a[0].length];
int[] col = new int[a.length];
int minIndex = -1;
for (int i = 0; i < a.length; i++) {
// First get the col out
for (int j = 0; j < a[0].length; j++) {
col[j] = a[j][i];
}
// Loop through the col
for (int k = 0; k < a[0].length; k++) {
int min = Integer.MAX_VALUE;
// Loop through the remaining numbers of the col
for (int j = 0; j < col.length; j++) {
// Find the remaining lowest number
if (min > col[j]) {
min = col[j];
minIndex = j;
}
}
// Delete the number from the array
col[minIndex] = Integer.MAX_VALUE;
// Set this number in the final array
nA[k][i] = minIndex;
}
}
return nA;
}
There might be an easier way, but it works !