这是我要解决的问题:
写入
findTwoSumPair
,它接受一个整数向量和一个目标总和,并返回一对表示元素的两个不同索引,总和为目标值(索引已排序)。这里没有明确的时间复杂度限制(即算法只需要按预期工作)。还要确保处理空输入。
这是我的主要内容:
std::cout << "Q3" << std::endl;
std::vector<int> q3Input1{0, 2, 3, 4, 5};
std::pair<int, int> q3Out1 = findTwoSumPair(q3Input1, 6);
std::pair<int, int> q3Out2 = findTwoSumPair(q3Input1, 10);
std::cout << q3Out1.first << " " << q3Out1.second
<< std::endl; // should output 1 3
std::cout << q3Out2.first << " " << q3Out2.second
<< std::endl; // should output -1 -1
这是导致我出现问题的功能:
std::pair<int, int> findTwoSumPair(const std::vector<int>& vec, int targetSum) {
for (unsigned int i = 0; i < vec.size(); i++){
for(unsigned int j = i; i < vec.size();j++){
/*
if(targetSum == vec[i]+ vec[j]){
std::cout << vec[i] << vec[j];
}*/
}
}
return{vec[i],vec[j];
// throw std::logic_error("not implemented");
}
我得到了 main.cpp,所以我不想更改它,并且有相关的库头文件可以让它运行。
由于某种原因,它只显示“Q3”。我注释掉了if
块内的内容,因为这给了我“信号:中止(核心转储)”错误。