解法1:
class Solution{
public:
vector<int>twoSum(vector<int> &numbers,int target){
vector<int> a = numbers;
vector<int> result;
sort(a.begin(),a.end());
int sum = 0,i = 0,j = (int)a.size() - 1;
while(i <j){
sum = a[i] + a[j];
if(sum < target)
i ++;
else if(sum > target)
j --;
else
break;
}
for(int m = 0;m < numbers.size();m ++){
if(a[i] == numbers[m]){
i = m + 1;
break;
}
}
for(int n = numbers.size() - 1;n >= 0;n --){
if(a[j] == numbers[n]){
j = n + 1;
break;
}
}
result.push_back(i < j? i:j);
result.push_back(i > j? i:j);
return result;
}
};
解法2:
class Solution{
public:
vector<int> twoSum(vector<int> &numbers,int target){
vector<int> result;
map<int,int> m;
for(int i = 0;i < numbers.size();i ++){
if(m[target - numbers[i]] > 0){
result.push_back(m[target - numbers[i]]);
result.push_back(i + 1);
}
else
m[numbers[i]] = i + 1;
}
return result;
}
};
153

被折叠的 条评论
为什么被折叠?



