-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathContainsDuplicateII.java
40 lines (35 loc) · 1.11 KB
/
ContainsDuplicateII.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.leetcode;
import java.util.HashMap;
/**
* Created by jamylu on 2018/1/7.
*/
public class ContainsDuplicateII {
public static void main(String[] args) {
int[] nums = {1, 0, 1, 1};
int k = 1;
System.out.println(contains(nums, k));
}
//借助HashMap
public static boolean contains(int[] nums, int k) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i]) && (map.get(nums[i]) - i >= -k) && (map.get(nums[i]) - i) <= k) {
return true;
} else {
map.put(nums[i], i);//由于key值的唯一性,会覆盖先前的值
}
}
return false;
}
//暴力法,超时
public boolean containsNearbyDuplicate(int[] nums, int k) {
for (int i = 0; i < nums.length; i++) {
for (int j = i - k; j <= i + k; j++) {
if (j >= 0 && j < nums.length && j != i && nums[i] == nums[j]) {
return true;
}
}
}
return false;
}
}