Senior
/* In the input, there is an array of numbers nums of length n. Each number in the array can be either unique or appear twice. The numbers are in the range [1, n]. You need to write a function that returns an array consisting only of numbers that appear twice. Examples: Input: nums = [4, 3, 2, 7, 8, 2, 3, 1] Output: [2, 3] Input: nums = [2, 2, 1] Output: [2] */
sobes.tech AI
Vastus AI-lt
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 }
See algoritm kasutab massiivi omadusi: numbrid 1 kuni n, ja muudab elemendi märki vastaval indeksil, mis vastab numbri väärtusele. Kui element on juba negatiivne, tähendab see, et number esineb teist korda, ja lisame selle tulemusele. See lähenemine töötab O(n) ajal ja O(1) lisamäluga.