Я не понимаю, почему метод twoSum внутри класса Solution ничего не выводит при вызове в main. Пожалуйста, скажи мне почему. Программа должна вывести позиции двух чисел, которые вместе равны целевой переменной. Существует только один действительный набор с этим свойством. Вы можете найти эту проблему по коду leetcode:
Учитывая массив целых чисел, вернуть индексы двух чисел так, чтобы они складывались до определенной цели.
Можно предположить, что каждый вход будет иметьодно решение, и вы не можете использовать один и тот же элемент дважды.
#include <iostream>
#include<vector>
#include<map>
using std::vector;
using std::map;
class Solution {
public:
vector <int> twoSum(vector<int>& nums, int target) {
map <int,int> mymap;
vector <int> res;
for(int i=0; i<nums.size(); i++)
{
mymap[nums[i]]=i;
}
for(int i=0; i<nums.size(); i++)
{
int result = target - nums[i];
if(mymap.find(result)!=mymap.end() && mymap[result] != i)
{
res.push_back(i);
res.push_back(mymap[result]);
return res;
}
}
return res;
}
};
int main()
{
vector<int> nums(4);
int target;
for(int i=0;i<4;i++)
{
std:: cin>> nums[i];
std:: cout<<nums[i]<<' ';
}
std:: cin>>target;
Solution abc;
abc.twoSum(nums,target);
return 0;
}
/// Для массива = [1,2,3,4] и цели = 6, я ожидал, что результат будет [1,3]. Вместо этого он ничего не печатает