Sobes.tech
Senior

// Δεδομένου ενός πίνακα ακέραιων αριθμών nums και ενός ακέραιου target // Πρέπει να βρούμε δύο αριθμούς των οποίων το άθροισμα είναι ίσο με το target και να επιστρέψουμε τους δείκτες τους // Υποθέτουμε ότι υπάρχει ακριβώς μία λύση και ότι δεν μπορεί να χρησιμοποιηθεί το ίδιο στοιχείο δύο φορές // Η απάντηση μπορεί να δοθεί σε οποιαδήποτε σειρά // Παραδείγματα: // [2,7,11,15], target = 9, απάντηση [0,1] (nums[0] + nums[1] == 9) // [3,2,4], target = 6, απάντηση [1,2] (nums[1] + nums[2] == 6) // [3,3], target = 6, απάντηση [0,1] (nums[0] + nums[1] == 6)

sobes.tech AI

Απάντηση από AI

Ниже пример решения задачи на Go с использованием хэш-таблицы для поиска пары чисел, сумма которых равна target:

func twoSum(nums []int, target int) []int {
    indices := make(map[int]int) // ключ — число, значение — индекс
    
    for i, num := range nums {
        complement := target - num
        if j, found := indices[complement]; found {
            return []int{j, i}
        }
        indices[num] = i
    }
    return nil // если решения нет (по условию всегда есть)
}

// Пример использования:
// nums := []int{2,7,11,15}
// target := 9
// result := twoSum(nums, target) // result == [0,1]

Идея: проходим по массиву, для каждого элемента проверяем, встречали ли мы ранее число, которое в сумме с текущим даст target. Если да — возвращаем индексы.