这道题需要一个思路上的转变。。。嗯。。。也没太多好说的,注意可能有负数,多想几种极端情况吧,好好看看人家的思路。
我的解法
过不了最后一个数据,{0000000.....23....99999999}5,也过不了其它很多情况。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int> output;
for (int m = 0; m < numbers.size(); m ++)
for (int n = m + 1 ; n < numbers.size(); n ++)
if (numbers[m] + numbers[n] == target){
output.push_back(m + 1);
output.push_back(n + 1);
}
return output;
}
};
人家的解法
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int lo=0, hi=numbers.size()-1;
while (numbers[lo]+numbers[hi]!=target){
if (numbers[lo]+numbers[hi]<target){
lo++;
} else {
hi--;
}
}
return vector<int>({lo+1,hi+1});
}
};