Senior
/* Въвеждането е масив от числа nums с дължина n. Всяко число от масива може да бъде уникално или да се срещне два пъти. Числата са в диапазона [1, n]. Трябва да напишете функция, която ще върне масив, съдържащ само числата, които се срещат два пъти. Примери: Вход: nums = [4, 3, 2, 7, 8, 2, 3, 1] Изход: [2, 3] Вход: nums = [2, 2, 1] Изход: [2] */
sobes.tech AI
Ҷавоб аз 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 }
Ин алгоритм аз истифода мебарад хусусиятҳои массив: рақамҳо аз 1 то n, ва тағир медиҳад ишора кардани унсури дар индекс, ки мувофиқ ба арзиши рақам. Агар унсур аллакай манфӣ бошад, ин маънои онро дорад, ки рақам дуввумин бор меояд, ва мо онро ба натиҷа илова мекунем. Ин усул дар вақти O(n) ва дар ёддошт O(1) кор мекунад.