Senior
/* Girişdə, uzunluğu n olan nums adlı bir massiv var. Massivin hər bir sayı ya unikal və ya iki dəfə rast gəlir. Sayılar [1, n] aralığındadır. Yalnız iki dəfə rast gələn sayıları ehtiva edən bir massiv qaytaran funksiya yazmalısınız. Nümunələr: Daxil: nums = [4, 3, 2, 7, 8, 2, 3, 1] Çıxış: [2, 3] Daxil: nums = [2, 2, 1] Çıxış: [2] */
sobes.tech Süni İntellekt
AI-dan cavab
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 }
Bu algoritm array-ın xüsusiyyətlərindən istifadə edir: 1-dən n-ə qədər olan ədədlər və ədədin dəyərinə uyğun indeksdəki elementin işarəsini dəyişir. Əgər element artıq mənfidirsə, bu, ədədin ikinci dəfə rast gəldiyini göstərir və onu nəticəyə əlavə edirik. Bu yanaşma O(n) vaxtda və O(1) əlavə yaddaşda işləyir.