[关闭]
@XQF 2018-03-07T22:58:00.000000Z 字数 807 阅读 1062

如何求数组中两个元素的最小距离?

数据结构与算法


问题描述:一个数组中有很多的重复元素,给出两个数n1,n2。求这两个数载数组中的最小距离

拿出一个变量暂存最小值,记录上一次的不同数,假如这一次是a,上一次是b,就可以减减后对比。倘若不是,更新last和index.
last是上一次出现的目标数字值
index是上一次出现的目标数字的索引

  1. public class Solution {
  2. public int getMinDis(int[] nums, int a, int b) {
  3. if (nums == null || nums.length == 0) {
  4. return -1;
  5. }
  6. if (a == b) {
  7. return 0;
  8. }
  9. int last = Integer.MAX_VALUE;
  10. int min = Integer.MAX_VALUE;
  11. int index = 0;
  12. int temp;
  13. for (int i = 0; i < nums.length; i++) {
  14. if (nums[i] == a) {
  15. if (last == b) {
  16. temp = i - index;
  17. if (temp < min) {
  18. min = temp;
  19. }
  20. }
  21. index = i;
  22. last = a;
  23. }
  24. if (nums[i] == b) {
  25. if (last == a) {
  26. temp = i - index;
  27. if (temp < min) {
  28. min = temp;
  29. }
  30. }
  31. index = i;
  32. last = b;
  33. }
  34. }
  35. return min;
  36. }
  37. public static void main(String[] args) {
  38. Solution solution = new Solution();
  39. // int[] nums = {-10, -5, -2, 7, 15, 50};
  40. // int[] nums = {4, 5, 6, 4, 7, 4, 6, 4, 7, 8, 5, 6, 4, 3, 10, 8};
  41. int[] nums = {4, 5, 6, 4, 5, 7, 9, 0};
  42. int result = solution.getMinDis(nums, 0, 4);
  43. System.out.println("result:" + result);
  44. }
  45. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注