栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java:找出三元组距离最小值

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java:找出三元组距离最小值

题目描述:

思路分析:目前想到两种解决方案

方法一:三次for循环遍历三个数组,先定义最小值为int类型的最大值,然后通过每次求到的绝对值之和D和min对比,找到最小值min。
定义a,b,c;在每次找到最小值的同时,都更新a,b,c为对应s1,s2,s3数组的值,最后输出min和(a,b,c)。但是此种方法时间复杂度太高。

方法二:距离D = ∣ a − b ∣ + ∣ b − c ∣ + ∣ c − a ∣ = 2 * ∣ c − a ∣

 只需要找到距离中的的最大值和最小值的作差

 

 

public class Main {

	public static void main(String[] args) {
		int [] a= {-1,0,9};
		int [] b= {-25,-10,10,11};
		int [] c= {2,9,17,30,41};
		juli(a,b,c);
	}
	private static int Min(int a,int b,int c) {		
		if(ac) {
				return a;
			}else if(b>a && b>c) {
				return b;
			}else {
				return c;
			}		
		
	}
	private static void juli(int[] a, int[] b, int[] c) {
		int i=0,j=0,k=0;
		int sum=999;
		while(iMax(a[i],b[j],c[k])-Min(a[i],b[j],c[k])) {
		    sum = Max(a[i],b[j],c[k])-Min(a[i],b[j],c[k]);
		    }
			if(a[i]<=b[j] && a[i]<=c[k]) {
				i++;
			}else if(b[j]<=a[i] && b[j]<=c[k]) {
				j++;
			}else {
				k++;
			}
		}
		System.out.println(sum*2);
		
	}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号