Java – print out the elements in the array that occur the least

I get an array of size 10. I want to write a program to print out the elements with the least number of occurrences and their number of occurrences

For example, for arrays: 1 2 3 3 2 2 4 4 5 4 the program should print Element: 1 5, occurrence times should be 1

So far, I have printed the most events, only one element

public class Question3 {

  public static void main (String[] args) { 

     int[] testarray = {1,2,3,4,5,4};
     int count = 0;
     int bigCount = 10;

      for (int i=0; i < array.length; i++) {
        for (int j=0; j < array.length; j++) {
          if(array[j] == array[i]) {
             count++;
        }
    }
        if(count > bigCount) {
          bigCount = count;
          array[i] = random;
      }
    }
 System.out.println("num of elements and occurences: " + maxCount);
  }
}

Solution

You need a data structure to store each unique element, and its number. Map < integer, integer > may be your best choice Iterate over your array as you do now and keep counting Something like this:

public static void main(String[] args) {

    int[] array = {1,4};
    //create the map like this: <Element,Count>
    Map<Integer,Integer> counts = new HashMap<>();

    for (Integer i : array) {
        if (counts.get(i) == null) {
            counts.put(i,1);
        } else {
            counts.put(i,counts.get(i) + 1);
        }
    }

    //find min value by sorting values and taking top element
    List<Integer> cs = new ArrayList<Integer>(counts.values());
    Collections.sort(cs);
    int minVal = cs.get(0);

    //find elements with minVal as their count
    List<Integer> minelements = new ArrayList<>();
    for (Entry<Integer,Integer> entry : counts.entrySet()) {
        if (entry.getValue() == minVal) {
            minelements.add(entry.getKey());
        }
    }
    //spit out each element and the count
    for (Integer i : minelements) {
        System.out.println("Element: " + i + " Number of occurences: "
                + minVal);
    }

}

It's not very efficient, but it's done

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
分享
二维码
< <上一篇
下一篇>>