orz 连这道题也没AC真是给跪了
class pairint{
public:
int v, id;
pairint(int v_,int id_):v(v_),id(id_){}
bool operator < (const pairint& another) const{
if(v == another.v){
return id < another.id;
}
return v < another.v;
}
};
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
int size = numbers.size();
vector<pairint> vecpair;
for(int i = 0; i < size; ++i){
vecpair.push_back(pairint(numbers[i], i));
}
sort(vecpair.begin(),vecpair.end());
int left = 0, right = size - 1;
while(left < right){
if(vecpair[left].v + vecpair[right].v < target){
++left;
}
else if(vecpair[left].v + vecpair[right].v > target){
--right;
}
else{
vector<int> vec;
vec.push_back(vecpair[left].id+1);
vec.push_back(vecpair[right].id+1);
sort(vec.begin(),vec.end());
return vec;
}
}
vector<int> vec;
return vec;
}
};
错误1:
重新排序后数组的下表变化
错误2:
返回的下标对是递增序
错误3:
比较函数写错了