zoukankan      html  css  js  c++  java
  • [leetCode]219. 存在重复元素 II

    csdn:https://blog.csdn.net/renweiyi1487/article/details/109319192

    题目

    链接:https://leetcode-cn.com/problems/contains-duplicate-ii

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 ij,使得 nums [i] = nums [j],并且 ij 的差的 绝对值 至多为 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
    

    哈希

    使用map集合记录元素及其下标,代码已经详细注释

    class Solution {
        public boolean containsNearbyDuplicate(int[] nums, int k) {
            int n = nums.length;
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < n; i++) {
                if (!map.containsKey(nums[i])) { // 不包含这个元素则添加这个元素
                    map.put(nums[i], i);
                } else { // 已存在该元素则计算两元素之间的距离,符合标准则返回true,不符合则更新元素下标
                    int dis = Math.abs(i - map.get(nums[i])); 
                    if (dis <= k)
                        return = true;
                    else {
                        map.put(nums[i], i);
                    }
                }
            }
            return false;
        }
    }
    
  • 相关阅读:
    HDU 4608 I-number
    hdu 4607 ( Park Visit )
    ZROI十一集训Day2
    CodeForces1230
    模拟退火
    ZROI#1007
    ZROI#1006
    ZROI#1005
    ZROI#1004
    ZROI#962
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13887111.html
Copyright © 2011-2022 走看看