给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。
示例 1:
输入: nums = [1,2,3,1], k = 3
输出: true
示例 2:
输入: nums = [1,0,1,1], k = 1
输出: true
示例 3:
输入: nums = [1,2,3,1,2,3], k = 2
输出: false
思路:首先通过遍历数组来找到两个值相同的元素
其次,判断这两个元素的差的绝对值是否满足给定条件
最后,如果满足上面的两个条件则返回true,否则返回false
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
for(int i=0; i<nums.length; i++){
for(int j=i+1; j<nums.length; j++){
//利用Math.abs(int a)来判断绝对值的大小
//如果对应下标下的两个元素相等并且相差的绝对值在要求范围内,则返回true
if(nums[i] == nums[j] && (Math.abs(i-j)<=k)){
return true;
}
}
}
//数组都遍历完后都没有符合条件的两个元素则返回false
return false;
}
}
public class Test1{
public static void main(String[] args) {
int[] nums = new int[]{1,2,3,1,2,3};
System.out.println(new Solution().containsNearbyDuplicate(nums, 2));
}
}