Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java, одинаковые элементы

Del Fis Ученик (43), на голосовании 1 год назад
Продумал все способы, никак не могу понять, как реализовать код, чтобы он считал максимальное количество одинаковых элементов в двумерном массиве (в строках(нулевая строка - кол-во один. элементов)(первая строка ... и т.д.)).
Голосование за лучший ответ
Гуру Знаток (352) 1 год назад
Вы можете решить эту задачу с помощью двух циклов: внешнего цикла для перебора строк в массиве, и внутреннего цикла для подсчета количества одинаковых элементов в каждой строке. Затем вы можете сохранить количество одинаковых элементов в нулевой строке массива.

Вот пример кода на Java для решения этой задачи:
 public static void countDuplicates(int[][] arr) {  

int rows = arr.length;

int cols = arr[0].length;

arr[0] = new int[cols]; // инициализируем нулевую строку массива для хранения количества одинаковых элементов



for (int i = 0; i < rows; i++) {

for (int j = 0; j < cols; j++) {

int count = 0;

for (int k = j + 1; k < cols; k++) {

if (arr[i][j] == arr[i][k]) {

count++;

}

}

arr[0][j] = Math.max(arr[0][j], count + 1); // сохраняем максимальное количество одинаковых элементов в нулевую строку массива

}

}

}



Вы можете вызвать этот метод, передав ему двумерный массив:
 int[][] arr = {  

{1, 2, 3, 4, 5},

{1, 2, 3, 3, 5},

{1, 2, 3, 3, 5},

{1, 2, 2, 2, 5},

{1, 2, 2, 2, 5}

};



countDuplicates(arr);



for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr[0].length; j++) {

System.out.print(arr[i][j] + " ");

}

System.out.println();

}

Этот код выведет:
 3 2 2 3 5   

1 1 2 2 1

1 1 2 2 1

1 1 3 3 1

1 1 3 3 1

Здесь первая строка массива показывает максимальное количество одинаковых элементов в каждом столбце.
Михаил Просветленный (30520) 1 год назад
Есть несколько примеров кода, которые могут решить вашу задачу. Один из них использует HashMap для хранения и подсчета повторяющихся элементов в каждой строке двумерного массива. Другой использует циклы for для сравнения элементов в каждой строке или столбце двумерного массива.

Вы можете посмотреть эти примеры по ссылкам https://stackoverflow.com/questions/10201212/java-counting-duplicate-numbers-in-a-2d-array и https://stackoverflow.com/questions/41555784/compare-elements-of-rows-or-columns-in-2d-array-java . Надеюсь, это поможет вам!
Похожие вопросы