数组中两个元素的最小距离
来源:互联网 发布:软件测试自学网站 编辑:程序博客网 时间:2024/05/21 07:47
问题:给定一个数组,数组中含有重复元素,给出两个数n1和n2,求这两个数在数组中所出现位置的最小距离。例如,数组{4,5,6,4,7,4,6,4,7,8,5,6,4,3,10,8},4和8的最小距离是2.
思路:遍历数组,会遇到两个情况,一,当遇到n1时候,记录下n1对应的数组下标的位置n1_index,通过求n1_index与上次遍历到n2的下标值n2_index的差,可以求出最近一次遍历到n2和n2的距离。二,当遇到n2时候,同样记录n2在数组位置下标n2_index,然后求n2_index与上次遍历到的n1的下标值n1_index的差,求出最近一次遍历到的n1和n2的距离。
package Array;import java.util.*;/** * Created by Administrator on 2017/10/1. * 定义一个变量min_dist记录n1,n2的最小距离,在以上两种情况下每次求出n1和n2的距离与min_dist相比,求最小值。 */public class Test { public static int min(int a,int b){ return a>b?b:a; } public static int minDistance(int a[] ,int n1,int n2){ if(a==null){ return Integer.MIN_VALUE; } int len=a.length; int n1_index=-1; int n2_index=-1; int min_dist=Integer.MIN_VALUE+1; for(int i=0;i<len;i++){ if(a[i]==n1){ n1_index=i; if(n2_index>=0){ min_dist=min(Math.abs(min_dist),Math.abs(n1_index-n2_index));} } if(a[i]==n2){ n2_index=i; if(n1_index>=0){ min_dist=min(Math.abs(min_dist), Math.abs(n2_index-n1_index)); } } } return min_dist; } public static void main(String[] args){ int a[] = {4,5,6,4,7,6,4,7,8,5,6,4,3,10,8}; System.out.println(minDistance(a,5,10)); }}
阅读全文
0 0
- 数组中两个元素的最小距离
- 数组中两个元素最小的距离
- 数组中两个元素的最小距离
- 【谷歌面试题】求数组中两个元素的最小距离
- 求数组中两个元素的最小距离
- 求数组中两个元素的最小距离
- 数组中两个字符串的最小距离
- 数据结构面试题总结3——数组:求数组中两个元素的最小距离
- Java求解数组中的两个元素的最小距离
- 字符串之数组中两个字符串的最小距离
- 字符串问题---数组中两个字符串的最小距离
- 字符串数组中两个字符串的最小距离
- 求数组中两个字符串的最小距离 Python 版
- 返回数组中两个元素的最新距离
- 已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离
- 从一个数据元素无序的整型数组中找出最小的两个数的下标
- 求两个升序数组中最小元素差
- 求两个有序数组中,各个元素的c差值最小
- WWH——Why,What,How
- fcn的反卷积
- K-近邻算法(kNN)
- MySQL常用命令
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 A Tree 树分治 矩阵 没有逆元和交换律的树链统计
- 数组中两个元素的最小距离
- 20171001
- 摆摊
- 浙大数据结构题目
- DS, ES, SS, DI, SI, BP, SP, IP, FS 寄存器
- String类不可变以及不可变类总结
- 使用laravel进行微信开发要注意的关键点
- JSONP 应用
- 【模板】高精度