Remove Element - LeetCode

----- Условие ----- В массиве nums требуется удалить все элементы, равные val, на месте. А также вернуть длину результирующего массива.

----- Решение ----- Создаем offest - переменную, указывающую на смещение положения элементов (по сути, счетчик вхождения val). Проходимся в цикле по массиву. Если элемент с индексом i равен val, то инкрементируем offset, иначе перемещаем элемент на позицию i - offset.

Далее обрезаем массив до length - offset на месте с помощью splice.

Сложность алгоритма по времени O(n), где n - длина массива, сложность по памяти O(1).

----- Код ----- /**  * @param {number[]} nums  * @param {number} val  * @return {number}  */ const removeElement = function(nums, val) {   let offset = 0;     for (let i = 0; i < nums.length; i++) {     if (nums[i] === val) {       offset++;     } else {       nums[i - offset] = nums[i];     }   }

nums.splice(nums.length - offset);

return nums.length; };