Вывести максимальный элемент с указанием позиции индекса - PullRequest
1 голос
/ 24 июня 2019

Я печатаю максимальный элемент в массиве с их индексом. Я попробовал это.

int[] a = {10,20,30,40,40};
int index = 0;
int max = a[0];
for(int i = 0; i < a.length; i++)
{
    if(a[i] > max)
    {
         max = a[i];
         index = i;
    }
}
System.out.print(max + " " + index);

Это печатает "40 3". Но мне нужно "40 3 40 4". Как я могу изменить код для печати обоих максимальных элементов 40 с их индексом?

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Если вы хотите найти все максимальные значения, а также сохранить их так, чтобы их можно было использовать позже, вы можете использовать Map с max и index, установленными в качестве Value и Key соответственно. Ниже приведен один из способов реализации этого:

    //Max is the value, Key is the index
    Map<Integer, Integer> m = new HashMap<>();

    int [] a={10,20,30,40,40};

    int max=a[0];

    for(int i=0;i<a.length;i++)
    {
        if(a[i] >= max)
        {
            max=a[i];
            //If the value is not inside the map, empty the map
            if (!m.containsValue(max))
            {
                m.clear();
            }
            //Place the value into the map
            m.put(i, max);
        }
    }
    System.out.print(m.toString());

Будет выведено (вы можете изменить способ печати на что угодно):

{3=40, 4=40}
0 голосов
/ 24 июня 2019

Вы можете найти максимальное значение и проверить его массив, например,

int[] a = {10, 20, 30, 40, 40};
int max = Arrays.stream(a).max().getAsInt();
for (int i = 0; i < a.length; i++) {
      if (a[i] == max) {
        System.out.print(max + " " + i);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...