Leetcode 219. Contains Duplicate II

Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.

思路:用哈希表记录数字对应的位置,遍历数组,如果哈希表中已存在此数字,更新相距的最短距离,如果最短距离小于等于k,则返回true。

public boolean containsNearbyDuplicate(int[] nums, int k) {
    if (k < 1) {
        return false;
    }

    //record num => pos
    HashMap<Integer, Integer> map = new HashMap<>();

    //min distance
    int minDistance = Integer.MAX_VALUE;
    for (int i = 0; i < nums.length; i++) {
        if (map.containsKey(nums[i])) {
            minDistance = Math.min(minDistance, i - map.get(nums[i]));
            if (minDistance <= k) {
                return true;
            }
        }
        map.put(nums[i], i);
    }

    return false;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,776评论 0 33
  • 秋枝这辈子也忘不了的一餐,是她十五岁那年。直到今天,说起这件事,秋枝依然一脸的满足。 “你不晓——得,几——好七(...
    微语素心阅读 451评论 4 4
  • 我想抱抱你真的我想抱抱你。 我们穿着同样的衣服同样的鞋子,就想跟你看着宛如连体婴。 我们坐下在熙攘的台阶,我环着你...
    嗯我叫晴天阅读 204评论 0 0
  • 正因包罗万象 天空从不孤独 正因海纳百川 大海从不孤独 正因承载万物 大地从不孤独 辽阔的心不会孤独 孤独它不是洪...
    茶花香如故阅读 405评论 0 0