解題思路:
(1)先排序,時間複雜度nlogn,再獲得正負數的分水嶺,index
(2)對正負數區間分別討論,利用遞增的性質,優化i,j的移動
class Solution {
public:
bool checkIfExist(vector<int>& arr) {
sort(arr.begin(),arr.end());
int index=0;
for(int k=0;k<arr.size();k++) {
if(arr[k]>=0) {
index = k;
break;
}
}
//cout<<index<<endl;
//非負數部分
int i=index,j=i+1;
while(i<arr.size()&&j<arr.size()) {
if(2*arr[i]>arr[j]) j++;
else if(2*arr[i]==arr[j]) return true;
else i++;
}
//負數部分
i=index-1,j=i-1;
while(i>=0&&j>=0) {
if(2*arr[i]<arr[j]) j--;
else if(2*arr[i]==arr[j]) return true;
else i--;
}
return false;
}
};