【发布时间】:2020-12-22 09:53:28
【问题描述】:
问题: 给定一个整数数组和一个整数 k,找出数组中是否有两个不同的索引 i 和 j 使得 nums[i] = nums[j] 和绝对i 和 j 的差值最多为 k。
示例 1:
输入:nums = [1,2,3,1], k = 3 输出:true
我使用 HashSet(java) 解决了它。
但是当我浏览一些提交的解决方案时,下面的一个引起了我的注意:
public boolean containsNearbyDuplicate(int[] nums, int k)
{
int len = nums.length;
for(int i=0; i<len; i++)
{
int j = Arrays.binarySearch(nums, nums[i]);// Y this works as array is not sorted. Copied sol from submitted solution
if(i != j && Math.abs(i-j) <= k)
{
return true;
}
}
return false;
}
- 输入数组未排序,这也是此代码有效的原因,也是公认的解决方案。
- 如果问题是至少而不是最多的差异,那么如何解决它?
【问题讨论】:
-
那段代码完整吗?
标签: arrays algorithm data-structures binary-search