LeetCode 219:存在重复元素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

解题思路:

我们拿到这个题,首先可以看出需要双指针,需要嵌套for循环。先进行判断是否有相等,然后判断索引i和j的差的绝对值的最大值是否等于k。
在这里插入图片描述

解题步骤:

1、for循环遍历i从索引0开始。
2、for循环遍历j从i+1开始遍历。
3、判断nums[i]和nums[j]是否相等。
4、如果相等进行差的绝对值与k的比较。如果比k小,那就返回true。
5、如果不等就继续循环。
6、一直遍历完都没有true返回,那么返回false。

代码实现(Java):
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++){//
                if(nums[i]==nums[j]){//
                    if(Math.abs(j-i)<=k){//
                        return true;//
                    }
                }
            }
        }
        return false;//
    }
}
发布了48 篇原创文章 · 获赞 47 · 访问量 5247

猜你喜欢

转载自blog.csdn.net/weixin_45160969/article/details/103332162