Leet Code был одним из моих любимых мест для разработки алгоритмов JavaScript. Это заставляет меня расширять свои навыки решения проблем. Одна конкретная проблема, которую мне было трудно решить, - это вопрос «Удалить элемент». Однако было так много способов решить эту проблему, что мне пришлось выяснить, какой из них будет более действенным и действенным. Решаемой задаче даются два аргумента: массив чисел (nums) и целое число, помеченное как Val, удаляет все вхождения целого числа Val. Проще сказать, чем сделать, я придумал несколько интересных решений. Однако большинство из них не сработало в мою пользу.

Мой первый подход к проблеме. Я создал пустой массив, перебирая числа, и проверял, не равен ли конкретный элемент значению или типу числового значения, добавляя его в пустой массив. Кроме того, перебирая все числа, я возвращаю пустой массив.

К сожалению, LeetCode отверг мою логику, поэтому мне пришлось искать в Интернете разные стратегии.

Когда я открыл для себя метод двух указателей, он открыл новые возможности и сразу был добавлен в мой арсенал. Метод с двумя указателями заключался в установке переменной в ноль и, в конечном итоге, возврате ее на основе условия и указателя1.

Я смог решить этот упорный алгоритм с помощью этой стратегии. Ниже представлена ​​версия псевдокода.

Я начал с создания переменной с именем pointer1 и установил ее в ноль. Я перебрал целые числа и создал вторую переменную с именем pointer2. Условное условие было таким же, как и в первой стратегии. Если число не равно значению или типу Val, установите указатель равным указателю1. После того, как условное выражение было закреплено, я бы увеличил указатель1, чтобы он мог продолжаться во всем массиве. Как и раньше, я верну все, что произошло. Ниже представлено наглядное изображение предлагаемого решения.