Задачи
August 21, 2023
Задача. K-й пропущенный элемент
Дан целочисленный массив nums, который отсортирован по возрастанию и все его элементы уникальны. Также дано целое число k.
Верните k-е недостающее число.
Разбор
Алгоритм тут будет эмпирический, т.е. решение методом проб и ошибок. Начнем с базового случая:
- Если в массиве всего 1 элемент, тогда мы просто к элементу массиву прибавляем заданное число k и возвращаем результат.
- В противном случае, проходим по массиву и вычисляем количество пропущенных элементов между текущими соседними элементами массива (nums[i], nums[i - 1]).
- Если количество пропущенных элементов больше (или равно) заданного числа K, то мы сразу возвращаем значение (nums[i - 1] + K). То есть искомое число находится в промежутке между nums[i - 1] и nums[i].
- Если количество пропущенных элементов меньше заданного числа K, то вычитаем это число из K и переходим к следующему элементу массива.
- Если же мы прошли весь массив и искомое число еще не найдено, то оно лежит за пределами последнего элемента массива. Тогда ответом будет значение nums[len - 1] + K.