Наиболее частое и наименее повторяющееся частое число в массиве - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь найти самое частое и наименее повторяющееся число в массиве, например,

[7, 5, 6, 4, 6, 5, 5, 8, 7, 0,7, 5, 2, 9, 7, 9, 3, 4, 6]

Это дубликаты в приведенном выше массиве:

  1. «7» появляется (4 раза).
  2. Появляется «5» (4 раза).
  3. Появляется «6» (3 раза).
  4. Появляется «4» (2 раза).

«7» и «5» - наиболее часто встречающиеся числа, «4» - наименее часто встречающиеся дубликаты.

Когда я пытался кодировать, мне удавалось получить число 7, нотогда я не знаю, как реализовать менее часто.

Это код, который я написал:

String[] numbers = "7564655870752979346".split("");
        String elements = "";
        int count = 0;
        for (String tempElement : numbers) {
            int tempCount = 0;
            for (n = 0; n < numbers.length; n++) {
                if (numbers[n].equals(tempElement)) {
                    tempCount++;
                    if (tempCount > count) {
                        elements = tempElement;
                        //  System.out.println(elements);
                        count = tempCount;
                    }
                }
            }
        }
        System.out.println("Frequent number is: " + elements + " It appeared " + count+" times");

Мое решение, приведенное выше, выдает только 7, и я не знаю, как проверить наименьшее количество дубликатов.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Напишите функцию для поиска минимального повторного числа (начиная с 2)

public static String findMin(String[] numbers, int counter) {
    int count = 0;
    String elements = "";
    for (String tempElement : numbers) {
        int tempCount = 0;
        for (int n = 0; n < numbers.length; n++) {
            if (numbers[n].equals(tempElement)) {
                tempCount++;
                if (tempCount > counter) {
                    count = 0;
                    break;
                }
                if (tempCount > count) {
                    elements = tempElement;
                    //  System.out.println(elements);
                    count = tempCount;
                }
            }
        }
        if(count == counter) {
            return elements;
        }
    }
    if(count < counter) {
        return "";
    }
    return elements;
}

Цикл над числами:

String x = "";
int c = 2;
do {
    x = findMin(numbers, c ++);
} while(x == "");

Весь код будет

public class X {

  public static String findMin(String[] numbers, int counter) {
    int count = 0;
    String elements = "";
    for (String tempElement: numbers) {
      int tempCount = 0;
      for (int n = 0; n < numbers.length; n++) {
        if (numbers[n].equals(tempElement)) {
          tempCount++;
          if (tempCount > counter) {
            count = 0;
            break;
          }
          if (tempCount > count) {
            elements = tempElement;
            //  System.out.println(elements);
            count = tempCount;
          }
        }
      }
      if (count == counter) {
        return elements;
      }
    }
    if (count < counter) {
      return "";
    }
    return elements;
  }

  public static void main(String[] args) {
    String[] numbers = "756655874075297346".split("");
    String elements = "";
    int count = 0;
    for (String tempElement: numbers) {
      int tempCount = 0;
      for (int n = 0; n < numbers.length; n++) {
        if (numbers[n].equals(tempElement)) {
          tempCount++;
          if (tempCount > count) {
            elements = tempElement;
            //  System.out.println(elements);
            count = tempCount;
          }
        }
      }
    }
    String x = "";
    int c = 2;
    do {
      x = findMin(numbers, c++);
    } while (x == "");

    System.out.println("Frequent number is: " + elements + " It appeared " + count + " times");

    System.out.println("Min Frequent number is: " + x + " It appeared " + (c - 1) + " times");
  }
}
0 голосов
/ 24 ноября 2018

Решение:

  1. Подсчитайте, сколько раз появляется каждая цифра.Используйте массив счетчиков, по одному на каждую отдельную цифру.
  2. Найдите позицию в массиве счетов с числом == 2.

Реализация ... для вас,Но вам нужно будет найти способ преобразовать String, содержащий одну цифру, в целое число.(Подсказка: найдите javadocs!)

...