Senior
Moeilijkheid: Eenvoudig Gegeven is een gesorteerde array van nummers, waarin duplicaten voorkomen. Verwijder de duplicaten in-place (direct in de originele array) en geef de grootte van de resulterende array terug. Voorbeeld: Invoer: nums = [0,0,1,1,1,2,2,3,3,4] Uitvoer: 5, nums = [0,1,2,3,4,_,_,_,_,_] Uitleg: In deze array zijn 5 unieke elementen. Plaats ze op de eerste vijf posities in de originele array en retourneer het getal 5. De volgende elementen in de originele array kunnen willekeurig zijn.
sobes.tech AI
Antwoord van AI
Для удаления дубликатов из отсортированного массива 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 — уникальные
Таким образом, функция возвращает количество уникальных элементов, а первые элементы массива содержат эти уникальные значения. Остальные элементы массива могут быть любыми.