Remove Element

https://leetcode.com/problems/remove-element/description/Easy

Условие

Дан массив nums и значение val. Удалите все вхождения val в массив на месте и верните новую длину массива. Не используйте дополнительное пространство для массива.

Примеры

Input: nums = [3, 2, 2, 3], val = 3

Output: 2

Explanation: После удаления всех вхождений 3, массив становится [2, 2], и его длина равна 2.
Input: nums = [0, 1, 2, 2, 3, 0, 4, 2], val = 2

Output: 5

Explanation: После удаления всех вхождений 2, массив становится [0, 1, 3, 0, 4], и его длина равна 5.

Решение

fun removeElement(nums: IntArray, `val`: Int): Int {
    // Переменная i для отслеживания позиции записи в массиве
    var i = 0
    
    // Проходим по всем элементам массива
    for (j in nums.indices) {
        // Если текущий элемент не равен значению val
        if (nums[j] != `val`) {
            // Записываем текущий элемент на позицию i
            nums[i] = nums[j]
            // Увеличиваем индекс записи
            i++
        }
    }
    
    // Возвращаем новую длину массива, которая равна i
    return i
}

Временная сложность

O(n) – Где n – количество элементов в массиве nums.

Пространственная сложность

O(1) – Дополнительное пространство не используется.