@XQF
2018-03-07T22:58:00.000000Z
字数 807
阅读 1062
数据结构与算法
问题描述:一个数组中有很多的重复元素,给出两个数n1,n2。求这两个数载数组中的最小距离
拿出一个变量暂存最小值,记录上一次的不同数,假如这一次是a,上一次是b,就可以减减后对比。倘若不是,更新last和index.
last是上一次出现的目标数字值
index是上一次出现的目标数字的索引
public class Solution {
public int getMinDis(int[] nums, int a, int b) {
if (nums == null || nums.length == 0) {
return -1;
}
if (a == b) {
return 0;
}
int last = Integer.MAX_VALUE;
int min = Integer.MAX_VALUE;
int index = 0;
int temp;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == a) {
if (last == b) {
temp = i - index;
if (temp < min) {
min = temp;
}
}
index = i;
last = a;
}
if (nums[i] == b) {
if (last == a) {
temp = i - index;
if (temp < min) {
min = temp;
}
}
index = i;
last = b;
}
}
return min;
}
public static void main(String[] args) {
Solution solution = new Solution();
// int[] nums = {-10, -5, -2, 7, 15, 50};
// int[] nums = {4, 5, 6, 4, 7, 4, 6, 4, 7, 8, 5, 6, 4, 3, 10, 8};
int[] nums = {4, 5, 6, 4, 5, 7, 9, 0};
int result = solution.getMinDis(nums, 0, 4);
System.out.println("result:" + result);
}
}