Sobes.tech
Senior

/* Kiritishda, uzunligi n bo'lgan nums nomli massiv mavjud. Har bir massivdagi raqam yoki noyob, yoki ikki marta uchraydi. Raqamlar [1, n] diapazonida. Faqat ikki marta uchraydigan raqamlaridan iborat massivni chiqaradigan funktsiya yozish kerak. Misollar: Kiritish: nums = [4, 3, 2, 7, 8, 2, 3, 1] Chiqish: [2, 3] Kiritish: nums = [2, 2, 1] Chiqish: [2] */

sobes.tech AI

AIdan javob

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-ning xususiyatlaridan foydalanadi: 1 dan n gacha bo'lgan sonlar va sonning qiymatiga mos indeksdagi elementning belgisini o'zgartiradi. Agar element allaqachon manfiy bo'lsa, bu son ikkinchi marta uchrayotganligini anglatadi va uni natijaga qo'shamiz. Bu yondashuv O(n) vaqtda va O(1) qo'shimcha xotirada ishlaydi.