如何将二维矩阵写为输入并识别矩阵中出现次数最多的数字。
示例输入: 2 //没有行 3 //没有列 1 2 3 2 3 3 //这里作为输入的矩阵是2 x 3矩阵。剩余的六个数字是特定矩阵的值。 (第一行中的元素是1 2 3,第二行中的元素是2 3 3)
示例输出:3
import java.util.*;
class ArrayOccurence
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int row = sc.nextInt();
sc.nextLine();
int column = sc.nextInt();
sc.nextLine();
int element = 0;
int occurence = 0;
int arr[][] = new int[row][column]; // size of the array
for(int i=0; i < row; i++)
{
for(int j=0; j < column ; j++)
arr[i][j] = sc.nextInt();
}
//Do not modify the code above
/* Enter your code here */
// Do not modify code below
System.out.println("Matrix element "+element+" occurs "+occurence+" times in the matrix");
}
}
答案 0 :(得分:0)
您可以再次使用double for循环来计算每个数字的出现次数:
for(int i=0; i < row; i++)
{
for(int j=0; j < column ; j++)
//count occurences with a HashMap<Integer,Integer> or something like that
}
循环进入你的HashMap,找到最常出现的那个..
答案 1 :(得分:0)
使用以下内容替换在此输入您的代码的行
ArrayList<Integer> a = new ArrayList<Integer>();
int oc = 0;
int number = 0;
for(int i=0; i < row; i++)
{
for(int j=0; j < column ; j++){
if(a.isEmpty()){
a.add(arr[i][j]);
}
else if(a.contains(arr[i][j])){
int temp=0;
for(int k=0; k<a.size(); k++){
if(a.get(k) == arr[i][j]){
temp++;
}
}
if(temp > oc){
number = arr[i][j];
oc = temp;
}
a.add(arr[i][j]);
}
else{
a.add(arr[i][j]);
}
}
}
希望这有帮助。