// sort 후에 head tail 기법을 사용한다.
vector<pair<int,int>> findtwo(vector<int> & data, int target){
// sort
sort(data.begin(),data.end());
// go through array
int tail = 0;
vector<pair<int,int>> ret;
for(int i = 0 ; i < data.size() ; i++){
while(data[i]-data[tail]< target){
ret.push_back(pair<int,int>(data[tail],data[i]));
tail++;
}
}
return ret;
}
time complexity : O(NlogN), bucket sort 같은걸 사용 가능하면 O(N)..
'Programming Problems > Arrays' 카테고리의 다른 글
부분배열 내의 최대값-최소값이 2와 같거나 작은 인덱스 조합의 수 (0) | 2018.04.24 |
---|---|
모든 row와 column이 sorted 일때, K번쨰 작은 원소 찾기 (0) | 2018.04.23 |
모든 단어가 포함된 최소 범위 찾기 Q (0) | 2018.04.22 |
같은 길이의 증가 배열이 있을때, K번째로 작은 원소합 구하기 Q (0) | 2018.04.22 |
2차원 행렬에서 0의 갯수 세기 Q (0) | 2018.04.22 |