Senior
/* Ievadē ir masīvs ar numuriem nums, kura garums ir n. Katrs masīva numurs var būt unikāls vai parādīties divas reizes. Numuri ir diapazonā [1, n]. Jāuzraksta funkcija, kas atgriezīs masīvu, kas sastāv tikai no numuriem, kuri parādās divas reizes. Piemēri: Ievade: nums = [4, 3, 2, 7, 8, 2, 3, 1] Izvade: [2, 3] Ievade: nums = [2, 2, 1] Izvade: [2] */
sobes.tech AI
Atbilde no 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 }
Šis algoritms izmanto masīva īpašības: skaitļus no 1 līdz n, un maina elementa zīmi atbilstošajā indeksā, kas atbilst skaitļa vērtībai. Ja elements jau ir negatīvs, tas nozīmē, ka skaitlis atkārtojas otro reizi, un mēs to pievienojam rezultātam. Šī pieeja darbojas O(n) laikā un ar O(1) papildu atmiņu.