LeetCode219. 存在重复元素 II

LeetCode219. 存在重复元素 II
给定一个整数数组和一个整数 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

来源:力扣(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;
    }
}
发布了46 篇原创文章 · 获赞 39 · 访问量 1441
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览