您的位置:首页 > 其它

[Leetcode] Two Sum

2012-12-02 01:56 435 查看
class Solution {
public:
struct pair
{
int data;
int idx;
bool operator< (const pair& rhs) const
{
return data < rhs.data;
}
};

vector<int> twoSum(vector<int> &numbers, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> res;
vector<pair> seq(numbers.size());
for (int i = 0; i < numbers.size(); ++i)
{
seq[i].data = numbers[i];
seq[i].idx = i;
}

sort(seq.begin(), seq.end());

int i = 0;
int j = seq.size() - 1;
while (i < j)
{
if (seq[i].data + seq[j].data > target)
--j;
else if (seq[i].data + seq[j].data < target)
++i;
else
{
int minIdx = min(seq[i].idx, seq[j].idx) + 1;
int maxIdx = max(seq[i].idx, seq[j].idx) + 1;
res.push_back(minIdx);
res.push_back(maxIdx);
return res;
}
}

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