Senior
/* Er is een array van nummers nums met lengte n. Elk nummer in de array kan uniek zijn of twee keer voorkomen. De nummers liggen in het bereik [1, n]. Je moet een functie schrijven die een array teruggeeft die alleen die nummers bevat die twee keer voorkomen. Voorbeelden: Invoer: nums = [4, 3, 2, 7, 8, 2, 3, 1] Uitvoer: [2, 3] Invoer: nums = [2, 2, 1] Uitvoer: [2] */
sobes.tech AI
Antwoord van 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 }
Deze algoritme maakt gebruik van de eigenschappen van de array: nummers van 1 tot n, en verandert het teken van het element op de index die overeenkomt met de waarde van het nummer. Als het element al negatief is, betekent dit dat het nummer voor de tweede keer voorkomt, en voegen we het toe aan het resultaat. Deze aanpak werkt in O(n) tijd en in O(1) extra geheugen.