Если равных элементов матрицы несколько, то как вывести первый элемент? Java
Возникает проблема в третьей строке с вводом 0 4 4, нужно, чтобы программа выводила 0, а не 4.
На вход подаётся размерность матрицы и сами элементы матрицы. Найдите максимальный элемент матрицы. Если таковых несколько, то вынести индексы первого. Пример ввода: 3 3 1 1 4 3 2 1 0 4 4 Вывод: 0 2
public static void main(String[] args) {
int n,m;
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
int[][]matrix = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j] = scanner.nextInt();
}
}
int max = matrix[0][0];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if(max<matrix[i][j])
max = matrix[i][j];
}
}
System.out.println(max);
max = Integer.MIN_VALUE;
}
}
}
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Просто храните соответствующую пару индексов и обновляйте её при поиске максимума/минимума:
int maxRow = -1;
int maxCol = -1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (maxCol == -1 || matrix[i][j] > matrix[maxRow][maxCol]) {
maxRow = i;
maxCol = j;
}
}
}
if (maxCol > -1) {
System.out.printf("max [%d][%d] = %d%n", maxRow, maxCol, matrix[maxRow][maxCol]);
} else {
System.out.println("No max is found");
}