JavaRush/Java блог/Архив info.javarush/Кухня(); Задание N56
terranum
28 уровень

Кухня(); Задание N56

Статья из группы Архив info.javarush
участников
Кухня(); Задание N56 - 1 Правила [Одномерные массивы] 56. Дан одномерный массив чисел. Найти количество различных чисел этого массива.
Комментарии (16)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Docktor91
Уровень 40
25 сентября 2014, 13:30
это все terranum нас путает, ничего не говорит, только задачки подбрасывает))
Airon
Уровень 34
25 сентября 2014, 12:17
public static int getUniqueValues(int... array) {
    int count = 0;
    label1:
    for (int i = 0; i < array.length - 1; i++) {
        for (int j = i + 1; j < array.length; j++)
            if (array[i] == array[j])
                continue label1;
        count++;
    }
    return ++count;
}
Не очень люблю когда готовое решение всплывает само по себе во время обучения. Я не могу понять зачем в конце надо еще раз увеличить на единицу count. А все у меня длина на -1 в первом форе…
BappekM
Уровень 34
25 сентября 2014, 12:34
Представьте, что у вас массив на 2 различных элемента, просчитайте результат)
Docktor91
Уровень 40
25 сентября 2014, 12:38
ну, два и получится))
BappekM
Уровень 34
25 сентября 2014, 12:41
Я не могу понять зачем в конце надо еще раз увеличить на единицу count.
Я вижу что 2)
Docktor91
Уровень 40
25 сентября 2014, 12:42
аа ты к этому))просто он уже написал что нашел почему)))
BappekM
Уровень 34
25 сентября 2014, 12:49
))
Airon
Уровень 34
25 сентября 2014, 12:50
так все все русский язык такой, что одним словом из трех букв можно книги писать. Различный != уникальный =)
Airon
Уровень 34
25 сентября 2014, 13:00
Стоп так что не правильно?
допустим есть массив: [-2, 0, 6, 7, 7, -1, -3, 2, -3]
у него уникальных чисел [-2, 0, 6, 7, -1, 2, -3] = 7
но различных чисел [-2, 0, 6, -1, 2] = 5
Так 5 или 7 надо выводить? Или переведите пожалуйста условие задачи, а то в моей палате одни Наполеоны собрались.
BappekM
Уровень 34
25 сентября 2014, 13:03
я бы сказал наоборот, это уникальные [-2, 0, 6, -1, 2] ))
Airon
Уровень 34
25 сентября 2014, 13:11
да Docktor91 ваш код мне 6 выдает на массив, мне кажется я уже схожу с ума! Какое решение у этой задачи?
Docktor91
Уровень 40
25 сентября 2014, 13:19
у меня код хромает
Docktor91
Уровень 40
25 сентября 2014, 13:21



    public static int getUniqueValues(int...arr)
    {
        if (arr.length == 0)
            throw new IllegalArgumentException("empty array");
        if (arr.length == 1)
            return 1;
        
        Arrays.sort(arr);
        int res = 1;
        
        for (int i = 1; i < arr.length; i++)
            if (arr[i] != arr[i - 1])
                res++;
        return res;
    }
Docktor91
Уровень 40
23 сентября 2014, 21:05

    public static int getUniqueValues(int...arr)
    {
        if (arr.length == 0)
            throw new IllegalArgumentException("empty array");
        if (arr.length == 1)
            return 1;
        
        Arrays.sort(arr);
        int res = 0;
        
        for (int i = 1; i < arr.length; i++)
            if (arr[i] != arr[i - 1])
                res++;
        if (arr[0] != arr[1])
            res++;
        return res;
    }
aiv
Уровень 27
25 сентября 2014, 07:03
Наверное, перед Arrays.sort(arr); стоит добавить копирование массива, т.к. помимо поиска решения этот метод еще и сортирует исходный массив.
Docktor91
Уровень 40
25 сентября 2014, 11:41
ну да)