同编程之美2.12,勉强通过,代码不太优雅,以后再改进
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
vector<int> saveNumbers = numbers;
sort(saveNumbers.begin(), saveNumbers.end(), less<int>());
int num1 = 0, num2 = 0;
for (int i = 0, j = saveNumbers.size() - 1; i < j;) {
if (saveNumbers[i] + saveNumbers[j] == target) {
num1 = saveNumbers[i];
num2 = saveNumbers[j];
break;
}
else if (saveNumbers[i] + saveNumbers[j] < target) {
++i;
}
else {
--j;
}
}
int index1 = 0, index2 = 0;
for (size_t i = 0; i < numbers.size(); ++i) {
if (numbers[i] == num1) {
index1 = i + 1;
break;
}
}
for (size_t j = numbers.size() - 1; j >= 0; --j) {
if (numbers[j] == num2) {
index2 = j + 1;
break;
}
}
vector<int> result;
if (index1 < index2) {
result.push_back(index1);
result.push_back(index2);
}
else {
result.push_back(index2);
result.push_back(index1);
}
return result;
}
};