Senior
Angenommen, es gibt ein sortiertes Array von Zahlen, das doppelte Elemente enthält. Entfernen Sie die Duplikate in-place (direkt im ursprünglichen Array) und geben Sie die Größe des resultierenden Arrays zurück. Beispiel: Eingabe: nums = [0,0,1,1,1,2,2,3,3,4] Ausgabe: 5, nums = [0,1,2,3,4,_,_,_,_,_] Erläuterung: In diesem Array gibt es 5 eindeutige Elemente. Platzieren Sie sie in den ersten fünf Positionen des ursprünglichen Arrays und geben Sie die Zahl 5 zurück. Die nachfolgenden Elemente im ursprünglichen Array können beliebig sein.
sobes.tech KI
Antwort von AI
Um doppelte Elemente aus einem sortierten Array in-place zu entfernen, können zwei Zeiger verwendet werden: einer zum Durchlaufen des Arrays, der andere für die Position, an der die einzigartigen Elemente geschrieben werden.
Idee:
- Initialisieren Sie
writeIndexmit 1 (das erste einzigartige Element ist bereits an Ort und Stelle). - Durchlaufen Sie das Array mit
readIndexvon 1 bis zum Ende. - Wenn das aktuelle Element ungleich dem vorherigen ist, schreiben Sie es in
nums[writeIndex]und erhöhenwriteIndex.
Am Ende ist writeIndex die Anzahl der einzigartigen Elemente.
Beispiel in 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
}
// Verwendung:
// 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]