您的位置:首页 > 其它

LeetCode 1 Two Sum

2015-12-23 20:12 330 查看
开始刷LeetCode

刷完换工作!!!

先排序后左右搜索

struct Element
{
int iNumber;
int iIndex;
};

bool compareFunc(const Element& arg1, const Element& arg2)
{
return arg1.iNumber<arg2.iNumber;
}

class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {

vector<int> results;
vector<Element> vInput;
vector<int>::iterator itv = numbers.begin();
int i =0;
Element temp;
while(itv!=numbers.end())
{
temp.iNumber = *itv;
temp.iIndex = ++i;
vInput.push_back(temp);
}
sort(vInput.begin(),vInput.end(),compareFunc);
vector<Element>::iterator itv1 = vInput.begin();
vector<Element>::iterator itv2 = vInput.end();
itv2--;
while(itv1<=itv2 && itv1->iNumber + itv2->iNumber!=target)
{
if(itv1->iNumber+itv2->iNumber<target)
itv1++;
if(itv1->iNumber+itv2->iNumber>target)
itv2--;
}
if(itv1->iNumber + itv2->iNumber== target)
{
if(itv1->iIndex<itv2->iIndex)
{
results.push_back(itv1->iIndex);
results.push_back(itv2->iIndex);
}
else
{
results.push_back(itv2->iIndex);
results.push_back(itv1->iIndex);
}

}
return results;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode two sum