今天看啥  ›  专栏  ›  wyq小白

LeetCode219. 存在重复元素 II

wyq小白  · CSDN  ·  · 2019-12-01 10:18

LeetCode219. 存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。
示例 1 :

输入: nums = [1,2,3,1], k = 3
输出: true
  • 1
  • 2

示例 2 :

输入: nums = [1,0,1,1], k = 1
输出: true
  • 1
  • 2

示例 3 :

输入: nums = [1,2,3,1,2,3], k = 2
输出: false
  • 1
  • 2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析:
根据题意,我们不难想到遍历数组,用i和j两个变量来找相同元素的位置,首先第一个for循环遍历从i开始,第二个for循环从i+1开始找到相同的元素停止,计算位置差值的绝对值,然后和k比较即可。(示意图如下)
在这里插入图片描述 代码实现:

//存在重复元素 II
class Leetcode219{
    public static void main(String[] args){
        int[] arr={1,2,3,1,2,3};
        int k=2;
        System.out.println(containsNearbyDuplicate(arr, k));
    }
    public static boolean containsNearbyDuplicate(int[] nums, int k) {
        for(int i=0;i<nums.length;i++){     //遍历数组
            for(int j=i+1;j<nums.length;j++){   //从第i+1个元素遍历数组
                if(nums[i]==nums[j]){         //如果存在相等的元素
                    if(Math.abs(j-i)<=k){       //求两索引的差的绝对值是否小于等于k
                        return true;        //满足则返回true
                    }
                }
            }
        }
        return false;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20



原文地址:访问原文地址
快照地址: 访问文章快照