Remove Element
https://leetcode.com/problems/remove-element/description/ | Easy |
Условие
Дан массив nums и значение val. Удалите все вхождения val в массив на месте и верните новую длину массива. Не используйте дополнительное пространство для массива.
Примеры
Input:
nums = [3, 2, 2, 3], val = 3Output:
2Explanation:
После удаления всех вхождений 3, массив становится [2, 2], и его длина равна 2.
Input:
nums = [0, 1, 2, 2, 3, 0, 4, 2], val = 2Output:
5Explanation:
После удаления всех вхождений 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) – Дополнительное пространство не используется.