• 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;
        }
    }
  • 相关阅读:
    LAMP 环境搭建
    环境搭建/安装部署
    Linux 系统安装(5分钟)
    Eclipse 配置
    wsdl生成的客户端
    Oracle 修改字符集
    jquery expand
    js中不常用的对象或方法
    js中面向对象的封装
    JavaScript点击li显示索引
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11331992.html
Copyright © 2020-2023  润新知