参考资料:
[1]无,使用普适性算法
思路:
找到一个数,再去找另一个数,如果找到了就返回。
自己的解答:
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
//整体思路:找到一个数,再去找另一个数,如果找到了就返回。
vector<int> result;
//如果是空的,return 空的
if(array.empty())
return result;
int found=0;
for(int i=0;i<array.size();i++)
{
for(int j =i+1;j<array.size();j++)
{
if(array[i]+array[j] == sum)
{
found =1;
if(array[i]<array[j])
{
result.push_back(array[i]);
result.push_back(array[j]);
break;
}
else
{
result.push_back(array[j]);
result.push_back(array[i]);
break;
}
}
}
if(found ==1)//因为只能返回一组,找到了就撤
break;
}
return result;
}
};
标准答案:
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
//看到题就这么想的写法,普适性算法,用折半查找进行改进。
vector<int> num;
int i = 0;
int j = 0;
int found =0;
for(i=0;i<array.size();i++)
{
for(j=i+1;j<array.size();j++)
{
if((sum-array[i])==array[j])
{
found = 1;
if(array[i]<array[j])
{
num.push_back(array[i]);
num.push_back(array[j]);
break;
}
else
{
num.push_back(array[j]);
num.push_back(array[i]);
break;
}
}
}
if(found ==1)
break;
}
return num;
}
};