@XQF
2018-03-07T14:58:00.000000Z
字数 807
阅读 1181
数据结构与算法
问题描述:一个数组中有很多的重复元素,给出两个数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);}}
