二维矩阵作为输入

时间:2014-04-10 17:37:17

标签: java arrays matrix

如何将二维矩阵写为输入并识别矩阵中出现次数最多的数字。

示例输入: 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");
   }
}

2 个答案:

答案 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]);
            }
        }

    }

希望这有帮助。