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 class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { // use a hashmap , key is the value, value is list of index // every time when we try to add an index to the list of index, // check their index diff , if it's at most k HashMap<Integer, List<Integer>> map = new HashMap<>(); for(int i = 0; i < nums.length; i++){ if(!map.containsKey(nums[i])){ map.put(nums[i], new ArrayList<>()); } List<Integer> list = map.get(nums[i]); if(list.size() >= 1){ for(int index : list){ if(Math.abs(index - i) <= k) return true; } } list.add(i); } return false; } }
posted on 2018-11-08 02:15 猪猪🐷 阅读(72) 评论(0) 收藏 举报
浙公网安备 33010602011771号