Sobes.tech
Senior

/* Na vstupe je niz številk nums dolžine n. Vsaka številka v nizu je lahko unikatna ali se pojavi dvakrat. Številke so v razponu [1, n]. Potrebno je napisati funkcijo, ki bo vrnila niz, ki vsebuje samo številke, ki se pojavijo dvakrat. Primeri: Vhod: nums = [4, 3, 2, 7, 8, 2, 3, 1] Izhod: [2, 3] Vhod: nums = [2, 2, 1] Izhod: [2] */

sobes.tech AI

Odpoveď od 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 }


Ovaj algoritam koristi svojstva niza: brojeve od 1 do n, i menja znak elementa na indeksu koji odgovara vrednosti broja. Ako je element već negativan, to znači da se broj pojavljuje drugi put, i dodajemo ga u rezultat. Ovaj pristup radi u vremenu O(n) i u O(1) dodatnoj memoriji.