class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int>a;
int flag = 0;
for(int i=0;i<nums.size()-1;i++)
{
for(int j=i+1;j<nums.size();j++)
{
if((nums[i]+nums[j])==target)
{
a.push_back(i);
a.push_back(j);
int flag = 1;
break;
}
}
if(flag==1)
{
break;
}
}
return a;
}
};
由於代碼敲錯,導致總是出現運行錯誤,故用vs調試了一下,這里貼出完成的工程代碼:
#include<iostream>
#include <vector>
using namespace std;
vector<int> twoSum(vector<int>& nums, int target);
int main()
{
vector<int>abb;
abb.push_back(3);
abb.push_back(2);
abb.push_back(4);
int ac = 6;
cout<<twoSum(abb, ac).front()<<endl;
cout << twoSum(abb, ac).back() << endl;
return 0;
}
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int>a;
int flag = 0;
for (int i = 0; i < nums.size() - 1; i++)
{
for (int j = i + 1; j < nums.size(); j++)
{
if ((nums[i] + nums[j]) == target)
{
a.push_back(i);
a.push_back(j);
int flag = 1;
break;
}
}
if (flag == 1)
{
break;
}
}
return a;
}
其實這個題類似於挑戰程序設計里面開篇介紹的題,主要是讓降低算法的復雜度,因為數據量太小,此處我直接用枚舉法搞定,當數據量變的很大時,就要考慮降低復雜度了,挑戰程序設計里面的思路是降低循環的層數,此處的話就是變成一層,然后把向量中的數據排序,最后利用二分查找來判別向量中有沒有這個數。第一次發博客,文字表達和代碼排版都不會。