import
java.util.*;
class
Main {
public
static
int
Mindist(List<Integer> left, List<Integer> right) {
int
res = Integer.MAX_VALUE;
for
(
int
i =
0
; i < left.size(); i++) {
int
num = left.get(i);
int
index = right.indexOf(right.stream().filter(x -> x <= num).findFirst().orElse(right.get(right.size() -
1
)));
if
(index ==
0
) {
res = Math.min(res, Math.abs(num - right.get(index)));
}
else
if
(index == right.size()) {
res = Math.min(
res,
Math.min(
Math.abs(num - right.get(index -
1
)),
Math.abs(num - right.get(index))
)
);
}
}
return
res;
}
public
static
int
SpecialPairs(
int
[] nums) {
Map<Integer, Integer> m =
new
HashMap<Integer, Integer>();
List<Integer> vals =
new
ArrayList<Integer>();
for
(
int
i =
0
; i < nums.length; i++) {
m.put(nums[i], i);
}
for
(
int
p : m.keySet()) {
vals.add(p);
}
int
res = Integer.MAX_VALUE;
for
(
int
i =
1
; i < vals.size(); i++) {
List<Integer> vec =
new
ArrayList<Integer>();
vec.add(m.get(vals.get(i)));
for
(
int
j =
1
; j < vec.size(); j++) {
res = Math.min(res, Math.abs(vec.get(j) - vec.get(j -
1
)));
}
if
(i >
0
) {
int
a = vals.get(i);
List<Integer> left =
new
ArrayList<Integer>();
left.add(m.get(a));
int
b = vals.get(i -
1
);
List<Integer> right =
new
ArrayList<Integer>();
right.add(m.get(b));
res = Math.min(res, Mindist(left, right)) +
1
;
}
}
return
res;
}
public
static
void
main(String[] args) {
int
[] arr = {
0
, -
10
,
5
, -
5
,
1
};
System.out.println(SpecialPairs(arr));
}
}