Я не могу найти способ получить максимальное число в массиве (Ar.getMax ()). Мой вывод постоянно 0 - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь получить максимальное число в массиве, используя функцию getMax (), но вывод всегда равен 0.

Когда ввод: 12 87 3 10 55 69 40
Результат долженбыть: 69
Вместо результата: 0

  public int getMax()
      {
          int x=1;
          int y=0;   

          for(int i=0; i<size; i++)
              {
                  if(i!=size-1)
                  {
                      if(arr[i]>arr[x])
                      {
                          y=arr[i];
                          x++;
                      }
                  }
              }
          return y;
      }

Ответы [ 3 ]

1 голос
/ 29 октября 2019

Поскольку 89 больше, я думаю, вы хотите локальный максимум самой длинной неубывающей подпоследовательности в массиве. Проблема не очень хорошо сформулирована, поэтому, вероятно, нет домашней работы.

array: 12 87 3 10 55 69 40
sequences: 12 87
           3 10 55 *69* answer
           40

int maxOfLongestSubsequence(int[] a) {
   int maxSeqLength = 0;
   int max = Integer.MIN_VALUE;
   int seqStart = -1;
   for (int i = 0; i <= a.length; ++i) {
       if (i == 0 || i == a.length - 1 || a[i] < a[i - 1]) { // New subsequence
           int seqLength = i - seqStart;
           if (i - seqLength > maxSeqLength) {
               maxSeqLength = seqLength;
               max = a[i - 1];
           }
           seqStart = i;
        }
    }
    return max;
}

Сформулируйте проблему. Изобразите данные, как я сделал. И запрограммируйте это.

1 голос
/ 29 октября 2019

Просто установите максимальное значение по умолчанию для первого значения в массиве. Затем выполните итерацию по массиву, сравнивая это значение со следующим в массиве. Если больше, то назначьте его на макс. Продолжить до конца массива.

0 голосов
/ 29 октября 2019

Вы можете выбрать максимум массива int следующим образом:

int [] numbers = new int[]{12,87,3,10,55,69,40};

        int max = numbers[0];
        for(int current : numbers) {
            max = current >= max ? current : max;
        }
        System.out.println(max);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...