1 //用multimap就可以解决 2 class Solution 3 { 4 public: 5 bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) 6 { 7 if(nums.empty()) return false; 8 multimap<int, int> mp; 9 for(int i = 0; i < nums.size(); ++i) 10 { 11 mp.insert({nums[i], i}); 12 } 13 14 for(auto it = mp.cbegin(); it != mp.cend(); ++it) 15 { 16 auto iter = it; 17 for(++iter; iter != mp.cend(); ++iter) 18 { 19 if(abs((long)iter->first - (long)it->first) > t) break; 20 if(abs(iter->second - it->second) <= k) return true; 21 } 22 } 23 return false; 24 } 25 };
原文:https://www.cnblogs.com/yuhong1103/p/12679368.html