用pari容器,类似HashMap存取键和键对象,然后在排序,判断键与键对象是否小于t和k.
class Solution {
public:
bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
vector<pair<long,long>>hash;
for(int i=0;i<nums.size();i++){
hash.push_back(make_pair(nums[i],i));
}//类似哈希把键与对象存进去
sort(hash.begin(),hash.end());//排序
for(int i=0;i<nums.size();i++){
for(int j=i+1;j<nums.size();j++){
if(abs(hash[i].first-hash[j].first)<=t&&abs(hash[i].second-hash[j].second)<=k){
return true;
}
if(abs(hash[i].first-hash[j].first)>t){
break;
}
}
}
return false;
}
};