Senior
Étant donné un tableau trié de nombres contenant des éléments en double. Il faut supprimer les doublons en 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 : Dans ce tableau, il y a 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 d'origine peuvent être n'importe quoi.
sobes.tech IA
Réponse de l'IA
Pour supprimer les doublons d'un tableau trié en place, vous pouvez utiliser deux pointeurs : l'un pour parcourir le tableau, l'autre pour la position d'écriture des éléments uniques.
Idée :
- Initialisez
writeIndexà 1 (le premier élément unique est déjà à sa place). - Parcourez le tableau avec
readIndexde 1 jusqu'à la fin. - Si l'élément actuel n'est pas égal au précédent, écrivez-le dans
nums[writeIndex]et incrémentezwriteIndex.
Au final, writeIndex sera le nombre d'éléments uniques.
Exemple en Go :
func removeDuplicates(nums []int) int {
if len(nums) == 0 {
return 0
}
writeIndex := 1
for readIndex := 1; readIndex < len(nums); readIndex++ {
if nums[readIndex] != nums[readIndex-1] {
nums[writeIndex] = nums[readIndex]
writeIndex++
}
}
return writeIndex
}
// Utilisation :
// nums := []int{0,0,1,1,1,2,2,3,3,4}
// length := removeDuplicates(nums)
// fmt.Println(length) // 5
// fmt.Println(nums[:length]) // [0 1 2 3 4]