我不明白为什么在main中调用时,Solution类中的twoSum方法不输出任何内容。请告诉我为什么。程序应输出等于目标变量的两个数字的位置。此属性只有一个有效集。您可以在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;
}
///对于array = [1,2,3,4]和target = 6,我期望输出为[1,3]。相反,它不会打印出任何内容
[您将“输出”混淆为“控制台上打印的内容”,而将“输出”混淆为“函数返回的值”。
main中的abc.twoSum(nums,target);
调用returns是一个整数向量。在C和C ++中,返回值可能会被忽略,然后会丢失。
如果要打印某些内容,则必须将函数的返回值存储在变量中或直接使用它,然后实际打印它。