LeetCode 219 存在重复元素 II(java题解)

Joker㐅 2022-01-19 11:24:33

一、题目

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

 

示例 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

提示:

1 <= nums.length <= 105
-109 <= nums[i] <= 109
0 <= k <= 105

 

二、题解

这道题用了hashmap 让数组值为键值,即可判断数组中是否有相等值,再嵌套一层判断用于判断题目中的abs(i - j) <= k。如果都符合则返回true

否则就返回false。

代码:

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<>();//创建哈希表
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(nums[i])){//判断是否存在重复值
                //判断差值的绝对值是否小于等于k
                if(Math.abs(map.getOrDefault(nums[i],0)-i) <= k){
                    return true;
                }
            }
            map.put(nums[i],i);
        }
        return false;
    }
}

 

...全文
61 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,633

社区成员

发帖
与我相关
我的任务
社区描述
欢迎大家来到抱团内卷学习社区,在这里大家可以分享自己的学习笔记,求职心得,一起记录彼此的成长历程。社区群号:94108843,WX公众号:【兴趣使然的草帽路飞】
社区管理员
  • 路  飞
  • 一百个Chocolate
  • 灰小猿
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

最怕你一生碌碌无为,还安慰自己平凡可贵!

努力提高自己的知识储备,助力每一位冲刺大厂的小伙伴!

祝大家前程似锦,offer连连!

注意:每个月活跃积分最高的小伙伴,可以获得社区管理员权限哦!

试试用AI创作助手写篇文章吧