关闭

数组中两个元素的最小距离

421人阅读 评论(0) 收藏 举报
分类:
/**
 * 给定一个数组,数组中含有重复元素,给定两个数字,求这两个数字在数组中出现位置的最小距离。
 * 当遇到n1时,记录下当前下标n1_index,当遇到n2时,记录下当前下标n2_index,比较
 * n1_index与n2_index的差和记录最小距离的变量min_dist的大小。
 * @author chen
 */
public class minDistance {
	public static int min(int a,int b){
		return (a>b)?b:a;
	}
	public static int minDistance(int arr[],int n1,int n2){
		if(arr==null)
			return Integer.MIN_VALUE;
		int n1_index=-1,n2_index=-1,min_dis=Integer.MIN_VALUE+1;
		for(int i=0;i<arr.length;i++){
			if(arr[i]==n1){
				n1_index=i;
				if(n2_index>=0)
					min_dis=min(Math.abs(min_dis),Math.abs(n1_index-n2_index));
			}
			if(arr[i]==n2){
				n2_index=i;
				if(n1_index>=0)
					min_dis=min(Math.abs(min_dis),Math.abs(n2_index-n1_index));
			}
		}
		return min_dis;
	}
	public static void main(String[] args) {
		int arr[]={4,5,6,4,7,4,6,4,7,8,5,6,4,3,10,8};
		System.out.println(minDistance(arr, 4, 8));
	}
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:68240次
    • 积分:3667
    • 等级:
    • 排名:第8822名
    • 原创:312篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论