Senior
/* Es gibt ein Array von Zahlen nums mit der Länge n. Jede Zahl im Array kann entweder einzigartig sein oder zweimal vorkommen. Die Zahlen liegen im Bereich [1, n]. Es ist notwendig, eine Funktion zu schreiben, die ein Array zurückgibt, das nur die Zahlen enthält, die zweimal vorkommen. Beispiele: Eingabe: nums = [4, 3, 2, 7, 8, 2, 3, 1] Ausgabe: [2, 3] Eingabe: nums = [2, 2, 1] Ausgabe: [2] */
sobes.tech KI
Antwort von AI
go func findDuplicates(nums []int) []int { duplicates := []int{} for _, num := range nums { index := abs(num) - 1 if nums[index] < 0 { duplicates = append(duplicates, abs(num)) } else { nums[index] = -nums[index] } } return duplicates }
func abs(a int) int { if a < 0 { return -a } return a }
Dieser Algorithmus nutzt die Eigenschaften des Arrays: Zahlen von 1 bis n, und ändert das Vorzeichen des Elements an der Stelle des Index, der dem Wert der Zahl entspricht. Wenn das Element bereits negativ ist, bedeutet dies, dass die Zahl ein zweites Mal vorkommt, und wir fügen sie zum Ergebnis hinzu. Dieser Ansatz arbeitet in O(n) Zeit und O(1) zusätzlichem Speicher.