查找数组中的最大重复元素(最常用)

时间:2017-04-03 19:37:35

标签: java arrays algorithm

这是我的代码,请告诉我它有什么问题吗?我想找到一个数组的最大重复元素。

import java.util.*;
class solution {
public static void main (String args[]){

int i=0,j=0,k=0;
int count=-1,max=0,nmax=0,temp=0,temp2=0;
int a[]=new int[10];
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
while (i<n){
a[i]=sc.nextInt();
i++;
}

while(k<n){

  while (j<n){
   if(a[k]==a[j]){
     count++;
   }

    if(count>temp){
      temp=count;

    }
     j++;
  }


  if(temp>temp2){
    temp2=temp;
  max=a[k];
  }
  j=0;
  k++;
}

System.out.println(max);
}

}

我将数组的最后一个元素作为输出,如果逻辑中存在任何问题,请告诉我。提前谢谢!

-------------------- EDIT ------------------------- < / p>

我没有重新分配变量,这是工作代码!

import java.util.*;
class Solution {
public static void main (String args[]){

int i=0,j=0,k=0;
int count=0,max=0,nmax=0,temp=0,temp2=0;
int a[]=new int[10];
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
while (i<n){
a[i]=sc.nextInt();
i++;
}

while(k<n){

  while (j<n){
   if(a[k]==a[j]){
     count++;
   }

    if(count>temp){
      temp=count-1;

    }
     j++;
  }

//System.out.println(temp);
  if(temp>temp2){
    temp2=temp;

  max=a[k];
  //System.out.println(max);
  }
  j=0;
  temp=0;
  k++;
  count=0;
}
System.out.println("The most repeating element is"+max);

}

}

2 个答案:

答案 0 :(得分:0)

你的问题是

max=a[k];

不必将max设置为当前位置的元素,而是必须进行比较,并且只在当前元素大于当前值max时设置max。

答案 1 :(得分:0)

试试这个。

public static void main (String args[]){



    int i=0,j=0,k=0;
    int count=0,temp=0,temp2=1;
    int a[]=new int[10];
    int max=a[0];
    Scanner sc= new Scanner(System.in);
    int n=sc.nextInt();
    while (i<n){
    a[i]=sc.nextInt();
    i++;
    }

    while(k<n){
       temp = a[k];//put input elements into in temp
      while (j<n){
       if(temp==a[j]){ //check if any repeated element found 
         count++; //increment
       }

        if(count>temp2){ //if element present more than once
          max = temp;
          temp2 = count;
        }
         j++;
      }
      k++;
    }

    System.out.println(max);
}

<强>输入:

5
2
3
4
3
1

<强>输出:

3