坑点1:考虑t+1和x-mm可能超了int的最大范围,顾都用long long类型
坑点2:t可能是负数
class Solution {
public:
bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
map<long long,long long> A;
k+=1;
long long mm=0x7fffffff,mod=(long long)t+1;
for(auto& x:nums)
mm=min(mm,(long long)x);
if(nums.size()>=2 && t<0) return false;
for(int i=0;i<nums.size();++i){
if(i>=k)
A.erase((nums[i-k]-mm)/mod);
long long x=(nums[i]-mm)/mod;
if(!A.count(x)) A[x]=nums[i];
else return true;
if(A.count(x-1) && nums[i]-A[x-1]<=t) return true;
if(A.count(x+1) && A[x+1]-nums[i]<=t) return true;
}
return false;
}
};