zoukankan      html  css  js  c++  java
  • 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.

    Example 1:

    Input: nums = [1,2,3,1], k = 3
    Output: true
    

    Example 2:

    Input: nums = [1,0,1,1], k = 1
    Output: true
    

    Example 3:

    Input: nums = [1,2,3,1,2,3], k = 2
    Output: false

    improved hash table solution: keep a sliding window of k elements using Hash Table.

    time = O(n), space = O( min(n, k) )

    class Solution {
        public boolean containsNearbyDuplicate(int[] nums, int k) {
            Set<Integer> set = new HashSet<>();
            for(int i = 0; i < nums.length; i++) {
                if(set.contains(nums[i])) {
                    return true;
                }
                set.add(nums[i]);
                if(set.size() > k) {
                    set.remove(nums[i - k]);
                }
            }
            return false;
        }
    }

    naive hash table solution:

    time = O(n), space = O(n)

    class Solution {
        public boolean containsNearbyDuplicate(int[] nums, int k) {
            Map<Integer, List<Integer>> map = new HashMap<>();
            for(int i = 0; i < nums.length; i++) {
                map.putIfAbsent(nums[i], new ArrayList<>());
                map.get(nums[i]).add(i);
            }
            
            for(Map.Entry<Integer, List<Integer>> entry : map.entrySet()) {
                List<Integer> idx = entry.getValue();
                for(int i = 0; i < idx.size() - 1; i++) {
                    if(idx.get(i + 1) - idx.get(i) <= k) {
                        return true;
                    }
                }
            }
            return false;
        }
    }
  • 相关阅读:
    scan chain的原理和实现——3.Tester Timing
    pattern——serial/paralel
    Scan and ATPG (Tessent)----1.基础概念
    ipdb介绍及Tensor
    pytorch简介
    Python 之map、filter、reduce
    分类器、logistic回归
    机器学习方法、距离度量、K_Means
    动态规划、图
    T分布
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11331992.html
Copyright © 2011-2022 走看看