Senior
Difficulty: EASY Given a sorted array of numbers, which contains duplicates. You need to remove duplicates in-place (directly in the original array) and return the size of the resulting array. Example: Input: nums = [0,0,1,1,1,2,2,3,3,4] Output: 5, nums = [0,1,2,3,4,_,_,_,_,_] Explanation: There are 5 unique elements in this array. Place them in the first five positions of the original array and return the number 5. The subsequent elements in the original array can be anything.
sobes.tech AI
Vastus AI-lt
Для удаления дубликатов из отсортированного массива in-place можно использовать два указателя: один для прохода по массиву, другой — для записи уникальных элементов. Идея в том, что когда встречается новый уникальный элемент, мы записываем его на позицию следующего уникального индекса.
Пример на Go:
func removeDuplicates(nums []int) int {
if len(nums) == 0 {
return 0
}
uniqueIndex := 0
for i := 1; i < len(nums); i++ {
if nums[i] != nums[uniqueIndex] {
uniqueIndex++
nums[uniqueIndex] = nums[i]
}
}
return uniqueIndex + 1
}
// Использование:
// nums := []int{0,0,1,1,1,2,2,3,3,4}
// length := removeDuplicates(nums)
// теперь первые length элементов nums — уникальные
Таким образом, функция возвращает количество уникальных элементов, а первые элементы массива содержат эти уникальные значения. Остальные элементы массива могут быть любыми.