Найти индексы массива, которые в сумме дают число

Задание такое: Дан массив целых чисел. Необходимо реализовать метод, который возвращает индексы массива, значения которых в сумме дают число переданное в массив. Предполагается, что массив содержит только уникальные числа и всегда имеет искомые числа. Один и тот же элемент не может быть использован дважды. array = [3, 8, 15, 17], Number = 23 result = [1,2]

Я решил бы это через массив линейно, то есть искал бы значение равное разнице сначала 23- первый элемент и так далее, но как это сделать быстрее используя коллекции?


Ответы (1 шт):

Автор решения: Илья

Возможен вот такой вариант решения задачи, достаточно простой и понятный.


    public int[] twoSum(int[] nums, int target) {
    int index = 0;
    int index2 = 1;
    for (int i = 0; i < nums.length - 1; i++) { // "- 1" т.к. массив начинается с нуля.
        for (int j = i + 1; j < nums.length; j++) {
            if (nums[i] + nums[j] == target) {
                index = i;
                index2 = j;
            }
        }
    }
    int[] list = {index, index2}; 
    return list;
    }

Если что то не понятно, напишите мне, постараюсь помочь.

→ Ссылка