Заявление о проблеме

Этот вопрос меня немного смутил. Я не знал, с чего начать, пока не понял, что есть особая техника и уловка для решения этой проблемы. В этом путешествии по алгоритму я буду отвечать на вопрос «Удалить дубликаты из отсортированного массива». В Leetcode проблема гласит: «Удалите дубликаты на месте, чтобы каждый уникальный элемент появлялся только один раз». В результате мне пришлось бы возвращать длину всех уникальных целых чисел, отображаемых в виде целого числа. Например, для массива [1, 1, 2, 2, 3] результатом будут 3 уникальных значения в массиве.

Ограничения и проблемы

Я ранее решал проблему, похожую на этот вопрос, поэтому подошел к ней с таким же менталитетом. Однако моя заявка была отклонена из-за того, что Leetcode хотел более динамичного подхода. Моя предыдущая стратегия заключалась в создании пустого массива для добавления уникальных чисел. Создайте цикл for и перебирайте текущий массив. Кроме того, вставьте условное выражение, если текущий индекс числа не найден, добавьте его в массив. Как только мои уникальные элементы были добавлены, я возвращал длину массива. К сожалению, при прохождении тестов на отправку в Leetcode моя стратегия не удалась.

После нескольких попыток и неудачных попыток я смог найти уникальное решение, которое удовлетворило бы отправку LeetCode. Вот псевдокод ниже.

Решение

Уникальная стратегия решения этого вопроса - добавить заполнитель для сравнения. Поэтому именно это я и сделал, чтобы удовлетворить запросы Leetcode. Я начал с создания переменной с именем length и установил для нее значение 1. Я использовал цикл for для итерации по массиву, а затем приступил к добавлению условного выражения. Одно большое преимущество заключалось в том, что массив был отсортирован, поэтому я могу добавить простое условие для выполнения с помощью цикла for и оператора return. Я добавил условие, если текущее число больше, чем то, которое было до того, как он установил текущий индекс num на значение длины. Как только я добавил num [length], я сделал его равным текущему индексу. Это упростило сравнение целых чисел в массиве. Следовательно, каждое текущее число будет проверять целое число перед ним. Как только он перебирает все целые числа в массиве, я увеличиваю его. Таким образом, возвращается фактическая длина, накопленная по всему массиву.