Программа должна подсчитывать уникальные чисел в массиве, например
input:
{1, 1, 3, 4, 4, 4, 5, 5, 6}
output:
2
Код:
public static void main(String[] args) {
int[] znamka = {1, 2, 3, 1, 2, 2, 3, 1, 5};
System.out.println(Diff(znamka));
}
public static int Diff(int[] znamka){
ArrayList<Integer> ArrUnique = new ArrayList<Integer>();
int values=0;
for (int num : znamka) {
if (!ArrUnique.contains(num)) ArrUnique.add(num);
}
values = ArrUnique.size();
if (values == 1) values = 0;
return values;
}
Пожалуйста подскажите, можно ли написать без ArrayList
, если да, то как?
Не совсем понял вопроса... вопрос можно трактовать двояко. В первом случае все просто: Arrays.stream(znamka).distinct().count();
Во втором случае любой лист - плохое решение. В листе любой поиск производится обычной итерацией. это медленно. попробуйте так. в этом случае в коллекции не просто информация о количестве уникальных элементов, а информация о количестве повторений всех элементов.
final Map countMap = new HashMap<>();
Arrays.stream(znamka).forEach(value -> countMap.put(value, ((countMap.get(value)==null)?1:countMap.get(value)+1)));
long count = countMap.keySet().stream().filter(t -> countMap.get(t)==1).count();
Дан массив A длины (n+1), содержащий натуральные числа от 1 до nНайти любой повторяющийся элемент за время O(n), не изменяя массив и не используя...
Я использую slick slider для каруселькиНа тач девайсах я могу выбрать сразу 2 элемента навигации по слайдеру (2 точки)