标签:
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.
HashMap:
1 public class Solution { 2 public boolean containsNearbyDuplicate(int[] nums, int k) { 3 if (nums==null || nums.length==0) return false; 4 HashMap<Integer, ArrayList<Integer>> map = new HashMap<Integer, ArrayList<Integer>>(); 5 for (int i=0; i<nums.length; i++) { 6 if (!map.containsKey(nums[i])) { 7 ArrayList<Integer> list = new ArrayList<Integer>(); 8 list.add(i); 9 map.put(nums[i], list); 10 } 11 else { 12 ArrayList<Integer> list = map.get(nums[i]); 13 for (int index : list) { 14 if (Math.abs(index-i) <= k) return true; 15 } 16 list.add(i); 17 } 18 } 19 return false; 20 } 21 }
Leetcode: Contains Duplicate II
标签:
原文地址:http://www.cnblogs.com/EdwardLiu/p/5052896.html