Java Тест программы Arraylist не пройден - PullRequest
2 голосов
/ 13 марта 2020

Я создаю программу, которая при получении списка возвращает новый список целых чисел, в котором первые два элемента остаются неизменными, а каждый последующий элемент представляет собой медиану трех элементов, заканчивающихся в этой позиции в исходном списке. Например, учитывая список: [1, 2, 3, 4, 5, 6, 7, 8, 9], программа вернет: [1, 2, 2, 3, 4, 5, 6, 7, 8].

Это код, который я написал, где я получаю правильные результаты, но он не работает в моем тестере. Я не уверен, что пропустил странный случай.

1 Ответ

2 голосов
/ 13 марта 2020

Да, вы пропустили некоторые случаи: ваш код не вычисляет медиану, если одно или несколько чисел равны.

Решение, которое будет работать, на основе вашего кода:

    public static List<Integer> method(List<Integer> items) {
    List<Integer> list = new ArrayList<Integer>();
    int size = items.size();
    if (size == 0) {
        list = Arrays.asList();
    } else if (size == 1) {
        int first = items.get(0);
        list.add(first);
    } else if (size == 2) {
        int first = items.get(0);
        list.add(first);
        int second = items.get(1);
        list.add(second);
    } else {
        int first = items.get(0);
        int second = items.get(1);
        list.add(first);
        list.add(second);
        for (int i = 2; i < size; i++) {
            int med;
            if (items.get(i) <= items.get(i - 1) && items.get(i) >= items.get(i - 2)
                    || items.get(i) >= items.get(i - 1) && items.get(i) <= items.get(i - 2)) {
                med = items.get(i);

            } else if (items.get(i - 1) <= items.get(i) && items.get(i - 1) >= items.get(i - 2)
                    || items.get(i - 1) >= items.get(i) && items.get(i - 1) <= items.get(i - 2)) {
                med = items.get(i - 1);
            } else {
                med = items.get(i - 2);
            }
            list.add(med);
        }
    }
    return list;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...