Как получить индекс элемента массива java
Перейти к содержимому

Как получить индекс элемента массива java

  • автор:

Как получить индекс элемента массива java

Всем доброго времени суток.

Извиняюсь за глупый вопрос, но сам и в поиске ответа найти не могу. Есть массив объектов некторого типа и сам объект. Как узнать его индекс в этом массиве? Кроме перебора естественно. Если такого нет в стандартных пакетах, то как написать дженерик метод, который будет работать с любым типом объектов? Попробовал сам ,что-то не получается — через дженерик класс вроде как можно, а через метод не выходит.

Сам начинающий, просьба отнестись с пониманием

It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re: Индекс элемента в массиве

От: bolshik http://denis-zhdanov.blogspot.com/
Дата: 18.08.06 15:02
Оценка:

Здравствуйте, Master Yoda, Вы писали:

MY>Всем доброго времени суток.

MY>Извиняюсь за глупый вопрос, но сам и в поиске ответа найти не могу. Есть массив объектов некторого типа и сам объект. Как узнать его индекс в этом массиве? Кроме перебора естественно. Если такого нет в стандартных пакетах, то как написать дженерик метод, который будет работать с любым типом объектов? Попробовал сам ,что-то не получается — через дженерик класс вроде как можно, а через метод не выходит.

MY>Сам начинающий, просьба отнестись с пониманием

Уже все написано. java.util.Map называется

Re: Индекс элемента в массиве

От: Trean http://axamit.com/
Дата: 18.08.06 15:30
Оценка:

Здравствуйте, Master Yoda, Вы писали:

MY>Всем доброго времени суток.

MY>Извиняюсь за глупый вопрос, но сам и в поиске ответа найти не могу. Есть массив объектов некторого типа и сам объект. Как узнать его индекс в этом массиве? Кроме перебора естественно. Если такого нет в стандартных пакетах, то как написать дженерик метод, который будет работать с любым типом объектов? Попробовал сам ,что-то не получается — через дженерик класс вроде как можно, а через метод не выходит.

MY>Сам начинающий, просьба отнестись с пониманием

Если объект Comparable и массив отсортированный, то можно и бинарным поиском воспользоваться. Иначе Map используйте, где E тип вашего объекта.

Re[2]: Индекс элемента в массиве

От: Master Yoda
Дата: 18.08.06 15:43
Оценка:

Здравствуйте, Trean, Вы писали:

T>Если объект Comparable и массив отсортированный, то можно и бинарным поиском воспользоваться.

Не подойдет

T>Иначе Map используйте, где E тип вашего объекта.

Задачи, где нужно будет узнать индекс — разовые, смысла городить там мап нет совершенно никакого. Массив получаю через стандартные методы, например Table.getColumnOrder. После этого мне просто единожды нужно узнать индекс объекта в этом массиве. Если где-то здесь и есть кривость ,то только из-за недостаточно продуманного интерфейса SWT который почему-то не позволяет получить индекс столбца имея его объект.

Есть какие-нибудь другие варианты? Почему нельзя написать вспомагельный классик с дженерик методом ,который будет получать индекс на основе простого перебора. У меня не получилось, может кто-нибудь показать пример?

It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[3]: Индекс элемента в массиве

От: ika
Дата: 18.08.06 17:04
Оценка:

Здравствуйте, Master Yoda, Вы писали:

MY>Есть какие-нибудь другие варианты? Почему нельзя написать вспомагельный классик с дженерик методом ,который будет получать индекс на основе простого перебора. У меня не получилось, может кто-нибудь показать пример?

Если в библиотеку включить «классик с методом, который будет получать индекс на основе перебора», то, боюсь, авторитет такой библиотеки выше не станет. В принципе, от непродуманного апи — то же самое.

Re[3]: Индекс элемента в массиве

От: Trean http://axamit.com/
Дата: 19.08.06 08:59
Оценка: 14 (1)

Здравствуйте, Master Yoda, Вы писали:

MY>Здравствуйте, Trean, Вы писали:

T>>Если объект Comparable и массив отсортированный, то можно и бинарным поиском воспользоваться.

MY>Не подойдет

T>>Иначе Map используйте, где E тип вашего объекта.

MY>Задачи, где нужно будет узнать индекс — разовые, смысла городить там мап нет совершенно никакого. Массив получаю через стандартные методы, например Table.getColumnOrder. После этого мне просто единожды нужно узнать индекс объекта в этом массиве. Если где-то здесь и есть кривость ,то только из-за недостаточно продуманного интерфейса SWT который почему-то не позволяет получить индекс столбца имея его объект.

MY>Есть какие-нибудь другие варианты? Почему нельзя написать вспомагельный классик с дженерик методом ,который будет получать индекс на основе простого перебора. У меня не получилось, может кто-нибудь показать пример?

public class Utils < public static indexByValue(T[] arr, Object val) < for(int i = 0; i < arr.length; i++) < if(val.equals(arr[i]) < // если объекты идентичны то можно и == использовать return i; > > return -1; > >

Re[3]: Индекс элемента в массиве

От: граммофон
Дата: 19.08.06 23:58
Оценка: 15 (2) +1

Здравствуйте, Master Yoda, Вы писали:

MY> Если где-то здесь и есть кривость ,то только из-за недостаточно продуманного интерфейса SWT который почему-то не позволяет получить индекс столбца имея его объект.

прежде чем понять рекурсию, необходимо понять рекурсию.
Re[4]: Индекс элемента в массиве

От: Trean http://axamit.com/
Дата: 20.08.06 13:45
Оценка:

Здравствуйте, Trean, Вы писали:

Опечатался малость =)

T>

T>public class Utils < T>public static indexByValue(T[] arr, T val) < T>for(int i = 0; i < arr.length; i++) < T>if(val.equals(arr[i]) < // если объекты идентичны то можно и == использовать T> return i; T> > T> > T> return -1; T> > T>> T>

Re: Индекс элемента в массиве

От: Infernal
Дата: 21.08.06 07:23
Оценка: 10 (2) +2

Здравствуйте, Master Yoda, Вы писали:

MY>Всем доброго времени суток.

Object[] array = new Object[] < "1" , "2" , "3" >; int index = Arrays.asList(array).indexOf( «2» ); System.out.println( «index o m»>

Re: Индекс элемента в массиве

От: dims12 http://www.relativity.ru
Дата: 31.08.06 21:47
Оценка:

Здравствуйте, Master Yoda, Вы писали:

MY>Есть массив объектов некторого типа и сам объект. Как узнать его индекс в этом массиве? Кроме перебора естественно.

Это было бы волшебством. Объект в массиве НИКАК нельзя найти, кроме как перебором. Если перебор не устраивает, то нужно либо самому написать, либо воспользоваться библиотечными средствами индексирования.

Допустим, Вы решили воспользоваться библиотечными средствами. В Джаве есть классы Set и Map. Они, как раз, занимаются индескированием тех объектнов, которые в них кладутся. НО! Процесс индексирования работает ДОЛЬШЕ, чем поиск перебором. Индексирование нужно для чего? Чтобы один раз составить проиндексированный массив, а потом много-много раз в нём быстро искать. Если искать надо всего один раз, то перебор БЫСТРЕЕ!

Ниже я прочитал, что массив Вы получаете из какого-то GUI объекта. Посмотрите в справке, быть может у этого объекта уже есть методы, которые возвращают проиндексированые массивы (например, Map). А может быть, у объекта уже есть метод поиска? Скорее всего, там будет тот же перебор, но лежать он будет уже не на вашей совести.

Найти индекс элемента в списке в Java

В этом посте будет обсуждаться, как найти индекс элемента в списке в Java.

1. Использование indexOf() метод

Стандартное решение для поиска индекса элемента в списке использует метод indexOf() метод. Он возвращает индекс первого появления указанного элемента в списке или -1, если элемент не найден.

import java . util . List ;
class Main
public static void main ( String [ ] args )
List values = List . of ( 5 , 3 , 4 , 7 , 6 , 2 , 9 , 6 ) ;
int item = 6 ;
int index = values . indexOf ( item ) ;
System . out . println ( index ) ; // 4

2. Использование потокового API

С помощью Stream API вы можете сделать что-то вроде следующего. Решение генерирует IntStream индексов и фильтровать индексы, содержащие данный элемент, и возвращать индекс первого вхождения или -1, если соответствующий элемент не найден.

import java . util . List ;
import java . util . Objects ;
import java . util . stream . IntStream ;
class Main
public static void main ( String [ ] args )
List values = List . of ( 5 , 3 , 4 , 7 , 6 , 2 , 9 , 6 ) ;
int item = 6 ;
int index = IntStream . range ( 0 , values . size ( ) )
. filter ( i -> Objects . equals ( values . get ( i ) , item ) )
. orElse ( — 1 ) ;
System . out . println ( index ) ; // 4

3. Использование цикла

Вот эквивалентная версия без использования Stream API.

import java . util . List ;
import java . util . Objects ;
class Main
public static void main ( String [ ] args )
List values = List . of ( 5 , 3 , 4 , 7 , 6 , 2 , 9 , 6 ) ;
int item = 6 ;
int index = — 1 ;
for ( int i = 0 ; i < values . size ( ) ; i ++ ) < if ( Objects . equals ( values . get ( i ) , item ) ) < System . out . println ( index ) ; // 4

Это все, что касается поиска индекса элемента в списке в Java.

Оценить этот пост

Средний рейтинг 4.5 /5. Подсчет голосов: 24

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации

  • Все проблемы
  • Практика DSA
  • 100 самых популярных задач
  • 50 лучших классических задач
  • Лучшие алгоритмы
  • Компилятор С/С++
  • Компилятор Java
  • Компилятор Python
  • Компилятор JavaScript
  • компилятор PHP
  • Компилятор C#
  • Свяжитесь с нами
  • Политика конфиденциальности
  • условия обслуживания
  • Подпишитесь на новые публикации

Techie Delight © 2023 Все права защищены.

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Как получить индекс элемента массива java

Мы хотим сделать этот проект с открытым исходным кодом доступным для людей во всем мире. Пожалуйста, помогите нам перевести это руководство на другие языки.

Светлая тема Тёмная тема
Поделиться

Получение элемента массива с отрицательной позиции

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

let array = [1, 2, 3]; array[-1]; // 3, последний элемент array[-2]; // 2, предпоследний элемент array[-3]; // 1, за два элемента до последнего

Другими словами, array[-N] – это то же, что и array[array.length — N] .

Создайте прокси, который реализовывал бы такое поведение.

Вот как это должно работать:

let array = [1, 2, 3]; array = new Proxy(array, < /* ваш код */ >); alert( array[-1] ); // 3 alert( array[-2] ); // 2 // вся остальная функциональность массивов должна остаться без изменений

Java-программы для работы с массивами

В этой статье мы рассмотрим некоторые программы с массивами Java для интервью, которые чаще всего задают на собеседовании по Java.

Java-программы для работы с массивами

1. Дан массив arr размера n. Ваша задача — создать выходной массив на основе входного массива, а элементы будут произведением всех элементов входного массива, кроме значения по текущему индексу.
Пример —
обр = [4, 9, 6, 8] вывод = [432, 192, 288, 216]
Объяснение —
При индексе 0 умножение всех элементов, кроме 4, равно — (9 * 6 * 8) = 432.
В индексе 1 умножение всех элементов, кроме 9, равно — (4 * 6 * 8) = 192.
При индексе 2 умножение всех элементов, кроме 6, равно — (4 * 9 * 8) = 288.
В индексе 3 умножение всех элементов, кроме 8, равно — (4 * 9 * 6) = 216.

Подход 1 (Brute Force)

import java.util.Arrays; class Main < public static void main(String args[]) < int[] arr = ; int[] output = new int[arr.length]; for(int i = 0; i < arr.length; i++)< int mul = 1; //Loop for multiplying the values of the array. for(int j = 0; j < arr.length; j++)< //Skipping the element for the current index if(i == j) continue; mul *= arr[j]; >//Assigning the values to the current index output[i] = mul; > //Printing the output array. System.out.print(Arrays.toString(output)); > >

В этом подходе мы присваиваем значения выходному массиву для текущего индекса. И каждый раз мы вычисляем значение, которое нужно присвоить конкретному индексу. Этот подход занимает O (n ^ 2) времени. Потому что для каждого индекса мы вычисляем результат.

Подход 2 (Optimized)

import java.util.Arrays; class Main < public static void main(String args[]) < int[] arr = ; int[] output = new int[arr.length]; int multiply = 1; //Calculating the multiplication of all the elements. for(int n : arr) multiply *= n; //Assigning to the output array after diving with the //elements from input array. for(int i = 0; i < arr.length; i++) output[i] = multiply / arr[i]; //Printing the output array. System.out.println(Arrays.toString(output)); >>

В этом подходе мы сначала вычисляем умножение всех элементов, а затем присваиваем значения выходной переменной путем деления ее на текущий индексированный элемент. Так мы избегаем повторения работы. И нам нужно всего 2 отдельных обхода цикла. Таким образом, временная сложность будет O (n).

2. Напишите программу Java для перемещения всех 0 в конец массива.
Пример -
приб = [8, 0, 0, 7, 3, 0, 2] вывод = [8, 7, 3, 2, 0, 0, 0]
Объяснение -
В индексе 1 есть 0. Таким образом, 0 будет перемещен в последний, а первый ненулевой элемент попадет в 1-й индекс.
Аналогично для индекса 2 и 5 также.

Подход (using auxiliary array)

import java.util.Arrays; class Main < public static void main(String args[]) < int[] arr = ; int[] output = new int[arr.length]; //Pointer for adding the value in the output array. int k = 0; for(int i = 0; i < arr.length; i++)< //Skipping the element if it is 0. if(arr[i] == 0) continue; //Assigning the next value to the output variable. output[k] = arr[i]; k++; >//Printing the output. System.out.print(Arrays.toString(output)); > >

В приведенном выше подходе мы создаем дополнительный массив и добавляем к нему ненулевое значение, чтобы оставшееся пространство в массиве заполнялось 0. Временная сложность этого подхода составляет O (n), а пространственная сложность также равна O. (н).

Подход 2 (используя 2 указателя) -

import java.util.Arrays; class Main < public static void main(String args[]) < int[] arr = ; int i = 0, j = 0; while(i < arr.length)< //if find 0 then continue until nonzero found. if(arr[i] == 0)< i++; >else < //Swapping the values of 1st non-zero number found after 0 int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; i++; j++; >> //Printing the output. System.out.print(Arrays.toString(arr)); > >

В приведенном выше коде мы взяли 2 указателя. Один будет указывать на следующий 0, который нужно отправить последним, а другой будет следующим элементом, который заменит индекс первого указателя. Временная сложность этого будет O(n), а пространственная сложность будет постоянной O(1).

3. Напишите программу на Java для печати массива, содержащего лидеров из заданного входного массива. Лидером является элемент, у которого все элементы справа меньше его.
Пример -
приб = [8, 2, 5, 7, 3, 4, 2] вывод = [2, 4, 7, 8]
Объяснение -
Мы видим, что 2 является лидером, потому что 2 является последним элементом в массиве. 4 также является лидером, потому что после 4 все элементы меньше этого. И так же 7 и 8 тоже.

Решение -
Подход 1 (Brute force)

import java.util.ArrayList; class Main < public static void main(String args[]) < int[] arr = ; //Creating ArrayList that will contain the leader elements. ArrayList ans = new ArrayList<>(); for(int i = 0; i < arr.length; i++)< boolean flag = true; //Checking if the particular element is the leader. for(int j = i+1; j < arr.length; j++)< //If it's not the leader then changing the flag to false //and break if(arr[j] >arr[i]) < flag = false; break; >> //if flag is not false then we know that the element is the //leader adds in the answer. if(flag) ans.add(arr[i]); > //Printing the answer. System.out.println(ans); > >

В приведенном выше подходе мы проверяем каждый элемент, является ли он лидером или нет. Таким образом, временная сложность для описанного выше подхода будет O(n2).

Подход 2 (оптимизированный)-

import java.util.ArrayList; class Main < public static void main(String args[]) < int[] arr = ; //Declaring Result array to store the leader element ArrayList ans = new ArrayList<>(); //n represents the length of array size and max will //store the last element of the array. int n = arr.length, max = arr[n-1]; ans.add(max); for(int i = n-2; i >= 0; i--) < //If found another leader then changing the leader //and add to the answer array. if(arr[i] >max) < ans.add(arr[i]); max = arr[i]; >> //Printing the leader array. System.out.print(ans); > >

В этом подходе мы проверяем лидера элемента и находим наибольший. Потому что это будет лидер, так как все меньшие элементы находятся с правой стороны от него. Таким образом, временная сложность для этого подхода составляет O (n).

4. Напишите программу Java, чтобы найти индекс элемента пика в массиве. Пиковый элемент больше, чем его левый и правый элементы.
Пример -
обр = [4, 5, 7, 1, 2, 3] вывод = 2
Объяснение -
Мы видим, что элемент с индексом 2 = (7) больше, чем слева и справа. Элемент (5 и 1).

class Main < private static int findPeak(int[] arr, int low, int high)< if(high == low) // Corner case when only a single element is present. return low; while(low < high)< //calculating the mid index int mid = (low + high) / 2; //checking if the element of mid+1 is the peak if (mid < high && arr[mid] >arr[mid + 1]) return mid; //checking if the element of mid-1 is the peak else if (mid > low && arr[mid] < arr[mid - 1]) return (mid - 1); //checking if element exists on the left side of array from mid then //search on left side else if (arr[low] >= arr[mid]) high = mid - 1; //checking if element exists on right side of array from mid //then search on right else low = mid + 1; > return -1; // returning -1 if element is completely sorted > public static void main(String args[]) < int[] arr = ; int peak = findPeak(arr, 0, arr.length-1); System.out.print(peak); > >

5. Дан массив из n элементов, в котором каждый элемент встречается не менее 2 раз, кроме одного элемента. Поэтому напишите программу на Java, чтобы найти этот элемент.
Пример -
обр = [2,6,8,5,6,7,1,2,5,6,1,1,9,8,9] Выход = 7
Объяснение -
В приведенном выше массиве только 7 — это элемент, который встречается только один раз, поэтому выведите этот элемент.

import java.util.*; class Main < public static void main(String args[]) < HashMaphm = new HashMap<>(); int[] arr = ; //loop to count the frequency of the element in the array. for(int i : arr) < Object val = hm.get(i); if(val == null) val = 0; //If an element exists then increasing its frequency. hm.put(i, (int)val+1); >for (Map.Entry mapElement : hm.entrySet()) < int value = (int)mapElement.getValue(); //If found the value appeared only once then break if(value == 1)< int key = (int)mapElement.getKey(); System.out.println(key); break; >> > >

Объяснение -
В приведенном выше коде мы сначала вычисляем частоту каждого элемента, а затем проверяем значение, которое появляется только один раз. Когда значение найдено, мы печатаем это значение и выходим из цикла, поскольку уверены, что есть только 1 элемент, который появляется ровно один раз.

6. Напишите программу для сортировки массива с помощью сортировки вставками .
Пример -
приб = [6,3,7,6,2,4,1,8,9] вывод = [1,2,3,4,6,6,7,8,9]

import java.util.Arrays; public class Main< //Insertion Sort Algorithm static void Sort(int A[], int n) < int j = 0, key = 0; for (int i = 1; i < n; i++) < //Choosing an element key = A[i]; j = i - 1; //searching for the correct position. while (j >= 0 && key < A[j]) < A[j + 1] = A[j--]; >//Inserting the element to its correct position. A[j + 1] = key; > > public static void main(String[] args) < int[] arr = ; Sort(arr, 9); System.out.println(Arrays.toString(arr)); > >

Объяснение. Алгоритм сортировки вставками выбирает элемент из массива один за другим и пытается вставить его в соответствующую позицию. И именно этот подход мы применили в приведенном выше коде, чтобы извинить элементы в массиве.

7. Напишите программу на Java для поиска элемента в массиве, если элементы отсортированы и повернуты на несколько k шагов.
Пример -
arr = [5,6,1,2,3,4] target = 6 Вывод — элемент найден
Arr = [1,3] target = 2 Вывод — элемент не найден**

class Main < private static boolean search(int[] A, int target) < int low = 0, high = A.length-1, mid; while(low = A[low] && target else < //if element don't exist between range the search on //right sub array low = mid+1; >>else< // checking if target exists in the right subarray range if(target >= A[mid] && target else < //If elements don't exist in the right subarray then search // on left subarray high = mid-1; >> > return false; //return false if element doesn't exist in array. > public static void main(String args[]) < int[] arr = ; int target = 6; if(search(arr, target)) < System.out.println(" Element Found. "); >else < System.out.println(" Element not found in array. "); >> >

Объяснение. В приведенном выше коде мы используем подход бинарного поиска для поиска элемента, в котором он должен присутствовать. Если элементы существуют слева от средних элементов и уже отсортированы, то мы бинарно ищем их. В противном случае мы проверяем другой размер, если он существует или нет.

8. Напишите программу на Java для вывода k-го по величине элемента массива.
Пример -
обр = [5,9,3,7,4,6,1,2,8] k = 3 Выход = 7
Объяснение. 7 — третий по величине элемент в массиве, поэтому мы можем его напечатать.

import java.util.Arrays; class Main < public static void main(String args[]) < int[] arr = ; //Sorting the array Arrays.sort(arr); int length = arr.length, k = 3; //Printing the kth element from last, as that will be the maximum. System.out.print(arr[length - k]); > >

Объяснение -
Сначала мы сортируем элементы массива. Мы знаем, что в отсортированном массиве самый большой элемент находится в последнем индексе. Таким образом, используя это свойство, мы можем получить k-й по величине элемент, выбрав элементы из последнего, если элементы отсортированы.

9. Учитывая целочисленный массив arr и целое число k, переверните первый элемент k для каждых 2k элементов, начиная с массива. Если последние k элементов больше длины, просто пропустите их.
Пример -
обр = [2,9,3,7,5,8,3,4,2,5] k = 2 Выход = [9,2,3,7,8,5,3,4,5,2]
обр = [2,7,6,8,5,8,6,2,6,5,9,7,6,3] k = 3 Выход = [6,7,2,5,5,8,6 ,2,6,5,9,7,6,3]
Объяснение -
В выходном массиве мы видим, что элементы, выделенные жирным шрифтом, перевернуты. Потому что каждый k-й элемент нам нужно перевернуть. А во втором примере подчеркнутые элементы пропускаются, потому что они не являются полными k элементами.

import java.util.Arrays; class Main < //method to reverse the elements private static void reverse(int[] arr, int a, int b)< int temp; while(a < b)< temp = arr[a]; arr[a++] = arr[b]; arr[b--] = temp; >> public static void main(String args[]) < int[] arr = ; int k = 3; int n = arr.length; //loop to every kth element and reverse it. for(int i = 0; i < n-1; i += (k*2))< int a = i, b = i+k-1; //Checking if the index exists in between the array length if(b < b) reverse(arr, a, b); else //Break the loop if no further elements can be reversed. break; >System.out.println(Arrays.toString(arr)); > >

Объяснение -
В приведенном выше коде мы проходим через весь массив дважды по k шагов. Затем найти индекс и изменить элемент из массива. Если последний индекс k выходит за пределы, то мы завершаем цикл, а не переворачиваем массив, потому что это невозможно.

10. Напишите программу на Java, чтобы найти элемент, который встречается в массиве более n/2 раз. Если ни один элемент не встречается более n/2 раз, выведите -1.
Пример -
обр = [2,2,1,1,1,2,2] Выход = 2
обр = [2,3,3,2,5,5,7] Выход = -1
Объяснение -
В приведенном выше вводе размер массива равен = 7. И элемент, который существует больше, чем n/2 (7/2) = 3, равен 2. Поэтому нам нужно напечатать элемент 2.
Точно так же в другом примере ни один элемент не присутствует более 3 раз, поэтому мы печатаем -1.

import java.util.*; class Main < public static void main(String args[]) < int[] arr = ; HashMap hm = new HashMap<>(); int n = arr.length; //Counting the frequency of the elements. for(int i : arr) < Object val = hm.get(i); if(val == null) val = 0; hm.put(i, (int)val+1); >//flag to check if an element was found or not. boolean found = false; for (Map.Entry mapElement : hm.entrySet()) < int value = (int)mapElement.getValue(); //Checking if such elements exist or not. if(value >n/2) < int key = (int)mapElement.getKey(); System.out.println(key); found = true; break; >> //Printing -1 if element is not found. if(!found) System.out.println(-1); > >

Объяснение -
В приведенном выше коде мы сначала создаем частоту элемента, а затем для каждого элемента мы проверяем, что, если частота элемента больше n/2, мы печатаем и прерываем цикл, потому что мы знаем, что частота элемента post n/2 найдено, то ни один элемент больше n/2 не существует. В конце, если не найдено ни одного элемента с частотой большей, чем n/2. Затем мы печатаем -1.

Рекомендуем хостинг TIMEWEB

Рекомендуем хостинг TIMEWEB

Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

По статье задано0 вопрос(ов)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *