【发布时间】:2020-03-16 04:03:58
【问题描述】:
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
class twoSumClass{
public:
vector<int> twoSum(vector<int>& nums, int target){
vector<int> result;
unordered_map<int,int> hm;
for(int index = 0; index < nums.size(); index++){
int findVal = target - nums[index];
if(hm.count(findVal) > 0 && hm[findVal] != index){
result.push_back(index);
result.push_back(hm[findVal]);
return result;
}
else{
hm.insert(make_pair(nums[index], index));
}
}
return result;
}
};
void Print(vector<int>& v){
for (int i = 0; i < v.size(); i++){
cout << v[i] <<endl;
}
};
int main(){
vector<int> items = {1,2,3,4,5,6,7};
int trgt = 2;
twoSumClass myTest;
std::vector<int> res = myTest.twoSum(items, trgt);
Print(res);
return 0;
}
这是我的简单代码,我正在尝试在 linux 终端中运行此代码:g++ test1.cpp -o test1,然后运行:./test1 但是,终端不打印任何内容。 我如何更改代码?顺便说一句,代码的目的与 leetcode 问题 #1 相加两个相加。
【问题讨论】:
-
为什么要问打印出来,却不猜空向量
res? -
if(hm.count(findVal) > 0 && hm[findVal] != index)永远不会为真,因此向量为空。 -
这将是在
std::vector<int>中输出值的正确方法。但我认为您的函数不会向您的res向量添加任何内容。 -
如果您进行基本调试,应该很明显这不是打印问题。也就是说,在调试器中运行您的程序并逐步执行代码。
-
这是一个带有额外打印语句的版本,可以帮助您了解为什么您从未在向量中放入任何内容:onlinegdb.com/HJgJ-qhrL