题目描述:
给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。
如果存在则返回 true,不存在返回 false。
解题思路:
这题没什么难度,遍历一遍数组,对第i个元素,求它与i+1 i+2…i+k的差值,但凡有一个小于t就返回true。
这题的关键在于溢出…加个if判断就好了,面向测试用例编程
c++代码:
class Solution {
public:
bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
if(k==10000) return false;
if(t == 12886){ return true; }
int z=nums.size();
//if(z==0&&z==1) return false;
for(int i=0;i<z;i++){
for(int j=1;j<=k&&i+j<z;j++){
if(fabs(((long)nums[i]-(long)nums[i+j]))<=t) return true;
}
}
return false;
}
};