Write a pattern method in Java to find the most common elements in an array
•
Java
The question is:
Here's my code that almost works, except for single element arrays
publicstaticintmode(int[]n)
{
Arrays.sort(n);
int count2 = 0;
int count1 = 0;
int pupular1 =0;
int popular2 =0;
for (int i = 0; i < n.length; i++)
{
pupular1 = n[i];
count1 = 0; //see edit
for (int j = i + 1; j < n.length; j++)
{
if (pupular1 == n[j]) count1++;
}
if (count1 > count2)
{
popular2 = pupular1;
count2 = count1;
}
else if(count1 == count2)
{
popular2 = Math.min(popular2,pupular1);
}
}
return popular2;
}
Editor: I've finally figured it out Change COUNT1 = 0; To COUNT1 = 1; Everything worked
Solution
You should use HashMap to solve this problem Input o (n) time into each element and enter HashMap and O (1) to retrieve the element In the given code, I basically take a global maximum value and compare it with the value received from HashMap 'get'. Whenever I enter an element, look at:
HashMap has two parts. One is the key and the other is the value. When you do a get operation on the key, its value is returned
public static int mode(int []array)
{HashMap<Integer,Integer> hm=new HashMap<Integer,Integer>();
int max=1,temp;
for(int i=0;i<array.length;i++)
{
if(hm.get(array[i])!=null)
{int count=hm.get(array[i]);
count=count+1;
hm.put(array[i],count);
if(count>max)
{max=count;
temp=array[i];}
}
else
{hm.put(array[i],1);}
}
return temp;
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
