У меня есть следующая проблема, взятая из упражнений по тестированию кода Codility:
Дан массив A с нулевым индексом, состоящий из N различных целых чисел.
Массив содержит целые числа в диапазоне [1..(N + 1)], что означает
что отсутствует ровно один элемент.
Ваша цель — найти этот недостающий элемент элемент.
Напишите функцию:
class Solution { public int Solution(int[] A);
что для массива A с нулевым индексом возвращается значение отсутствующего
элемента.
Например, дан массив A такой, что:
A[0] = 2
A[1] = 3
A[2] = 1
A[3] = 5
функция должна вернуть 4, так как это недостающий элемент.
Предположим, что:
N — целое число в диапазоне [0..100 000];
элементы из A различны;
каждый элемент массива A представляет собой целое число в диапазоне [1..(N + 1)].
Сложность:
ожидаемая временная сложность в наихудшем случае равна O(N);
ожидаемая пространственная сложность в наихудшем случае равна O(1), за пределами хранилище входных данных (не >учитывая пространство, необходимое для входных аргументов).
Элементы входных массивов можно изменять.
< /blockquote>
Мой подход заключался в том, чтобы преобразовать данный массив в ArrayList, использовать ArrayList, чтобы найти самые низкие и самые высокие значения внутри массива, и перебрать все возможные значения от самого низкого до самого высокого, а затем вернуть недостающее значение.
Это решает проблему примера, но моя проблема, похоже, заключается в том, что я не могу получить правильные ответы при следующих условиях данного массива:
"пустой список и один элемент"
"первый или последний элемент отсутствует"
" один элемент"
"два элемента"
Что я делаю неправильно и как правильно это сделать заняться решением этой проблемы?
Подробнее здесь: https://stackoverflow.com/questions/298 ... -test-java
Как правильно решить тест PermMissingElem от Codility? (Ява) ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение