LeetCode 219. Contains Duplicate II(检查重复)

来源:互联网 发布:网络侵犯名誉权案例 编辑:程序博客网 时间:2024/05/16 01:57

原题网址:https://leetcode.com/problems/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 difference between i and j is at most k.

方法一:使用哈希映射。

public class Solution {    public boolean containsNearbyDuplicate(int[] nums, int k) {        if (nums == null || nums.length <= 1) return false;        Map<Integer, Integer> map = new HashMap<>();        map.put(nums[0], 0);        for(int i=1; i<nums.length; i++) {            Integer prev = map.get(nums[i]);            if (prev != null && i-prev<=k) return true;            map.put(nums[i], i);        }        return false;    }}

方法二:使用哈希集合。

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


0 0
原创粉丝点击