Нам дан массив (nums) и число (target), нужно проверить есть ли в массиве два элемента которые при сложении будут давать в сумме это число. Вывести индексы этих элементов.
Пример 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Пример 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]
Пример 3:
Input: nums = [3,3], target = 6
Output: [0,1]
Решение TwoSum
void TwoSum(int arr[], const int SIZE, int target)
{
bool solveFind = false;
cout << "Начинаем перебор массива: " << endl;
for (int i = 0; i < SIZE; i++)
{
if (solveFind == true) // если решение найдено, то заканчиваем перебор массива
{
break;
}
for (int x = i + 1; x < SIZE; x++) // перебираем массив i + (i + 1)
{
cout << arr[i] << " + " << arr[x] << " = " << arr[i] + arr[x] << endl;
if (arr[i] + arr[x] == target) // проверяем дают ли элементы при сложении сумму равной числу
{
cout << endl << "Решение найдено: " << arr[i] << " + " << arr[x] << " = " << arr[i] + arr[x] << endl;
cout << "[ " << i << ", " << x << " ]" << endl;
solveFind = true; // решение найдено
break;
}
}
}
if (solveFind == false)
{
cout << endl << "Решения нету :(" << endl;
}
}
int main()
{
int target; // число которое будем искать
cin >> target;
const int SIZE = 5;
int nums[SIZE]{ 1,2,3,4,5 }; // массив
TwoSum(nums, SIZE, target);
}