Leetcode Two Sum,我这个O(n)解法为啥不讨服务器的好呢# JobHunting - 待字闺中
g*d
1 楼
做hackerrank做的总是有一个test case过不去,郁闷了。转战leetcode。
目前C++用的相当不熟,临时看了看vector咋用
思路很简单,排序以后,两个下标从数组的两头向中间靠近。
我比较郁闷的是,提交以后说只有2个case过了,但是我找了4个最短的case心算一下都
没问题。
心想是不是C++用的太搓了,就这么点内容都搞错
class Solution {
public:
vector twoSum(vector &numbers, int target) {
sort(numbers.begin(), numbers.end());
vector result(2);
int i=0, j=numbers.size()-1;
while(true){
if (numbers[i] + numbers[j] == target){
result[0] = i+1;
result[1] = j+1;
break;
}
if (numbers[i] + numbers[j] > target){
j--;
}
if (numbers[i] + numbers[j] < target){
i++;
}
}
return result;
}
};
目前C++用的相当不熟,临时看了看vector咋用
思路很简单,排序以后,两个下标从数组的两头向中间靠近。
我比较郁闷的是,提交以后说只有2个case过了,但是我找了4个最短的case心算一下都
没问题。
心想是不是C++用的太搓了,就这么点内容都搞错
class Solution {
public:
vector
sort(numbers.begin(), numbers.end());
vector
int i=0, j=numbers.size()-1;
while(true){
if (numbers[i] + numbers[j] == target){
result[0] = i+1;
result[1] = j+1;
break;
}
if (numbers[i] + numbers[j] > target){
j--;
}
if (numbers[i] + numbers[j] < target){
i++;
}
}
return result;
}
};