原题链接:220. 存在重复元素 III
解题思路:
- 使用双循环遍历所有可能的下标
i
和j
,并根据要求判断下标是否满足条件,满足则返回true
。 - 如果能退出循环,表示没有找到满足条件的下标,返回
false
。 - 为避免重复,
j
只需要遍历i
之后的下标即可。
/**
* @param {number[]} nums
* @param {number} k
* @param {number} t
* @return {boolean}
*/
var containsNearbyAlmostDuplicate = function(nums, k, t) {
// 遍历下标i
for (let i = 0; i < nums.length; i++) {
// 遍历下标j,j为i之后的所有下标
for (let j = i + 1; j < nums.length; j++) {
// 根据题意,查询是否存在满足条件的下标,有则返回true
if (Math.abs(nums[i] - nums[j]) <= t && Math.abs(i - j) <= k) {
return true;
}
}
}
// 如果正常退出循环,表示没有找到下标,返回false
return false;
};