标签:
Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between iand j is at most k.
用哈希表记把一样的元素group起来即可。
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Map<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<>());
}
map.get(nums[i]).add(i);
}
for (List<Integer> list : map.values()) {
if (list.size() >= 2) {
for (int i = 1; i < list.size(); i++) {
if (list.get(i) - list.get(i - 1) <= k) {
return true;
}
}
}
}
return false;
}
}
标签:
原文地址:http://www.cnblogs.com/shini/p/4548192.html