Придется печатать частоту в отсортированном массиве. В моем решении есть ошибка, как ее исправить? - PullRequest
0 голосов
/ 04 августа 2020

Мне нужно подсчитать, сколько раз целое число встречается в отсортированном массиве.

Ожидаемый ввод:

int[] arr = {10, 10, 10, 20, 20, 40, 40, 45, 45}

Ожидаемый результат:

10 - 3

20 - 2

40 - 2

45 - 2

Итак , Я использовал для l oop, который начинается с первого (i) индекса, и сравнивая его с элементом ((i-1), который равен 0, индекс), если он равен, то увеличивайте значение счетчика, если оно не равно, затем выводите ответ и установите значение счетчика на 1.

Но это решение не дает мне вывода элемента arr [arr.length - 1]. Почему?

Мой результат:

10 - 3

20 - 2

40 - 2

Мое решение -

public static void main(String[] args) {
    //Frequencies in a sorted array
    int[] arr = {10, 10, 10, 20, 20, 40, 40, 45, 45};
    get_Frequencies(arr);
}

public static void get_Frequencies(int[] arr) {
    int counter = 1;
    for(int i = 1; i < arr.length; i++) {
        if (arr[i] == arr[i - 1]) {
            counter++;
        }

        if (arr[i] != arr[i - 1]) {
            System.out.println(arr[i - 1] + " - " + counter);
            counter = 1;
        }
    }
}

1 Ответ

0 голосов
/ 04 августа 2020

Поскольку вы вышли из l oop, счетчик последнего целого числа не выводится. Вы должны распечатать его после выхода из l oop.

Код -

public class HelloWorld{

 public static void main(String[] args) {
  //Frequencies in a sorted array
  int[] arr = {10, 10, 10, 20, 20, 40, 40, 45, 45};
   get_Frequencies(arr);
}

public static void get_Frequencies(int[] arr) {
   int counter = 1;
   int i = 1;
   for(; i < arr.length; i++) {
     if (arr[i] == arr[i - 1]) {
        counter++;
     }

     if (arr[i] != arr[i - 1]) {
       System.out.println(arr[i - 1] + " - " + counter);
       counter = 1;
    }
  }

  System.out.println(arr[i - 1] + " - " + counter);
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...