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

/**
 * 给定一个数组,数组中含有重复元素,给定两个数字,求这两个数字在数组中出现位置的最小距离。
 * 当遇到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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值