Sobes.tech
Senior

Difficulté : FACILE On vous donne un tableau trié de nombres, dans lequel il y a des doublons. Il faut supprimer les doublons in-place (directement dans le tableau d'origine) et retourner la taille du tableau résultant. Exemple : Entrée : nums = [0,0,1,1,1,2,2,3,3,4] Sortie : 5, nums = [0,1,2,3,4,_,_,_,_,_] Explication : Ce tableau contient 5 éléments uniques. Placez-les dans les cinq premières positions du tableau d'origine et retournez le nombre 5. Les éléments suivants dans le tableau original peuvent être n'importe quoi.

sobes.tech IA

Réponse de l'IA

Для удаления дубликатов из отсортированного массива 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 — уникальные

Таким образом, функция возвращает количество уникальных элементов, а первые элементы массива содержат эти уникальные значения. Остальные элементы массива могут быть любыми.