首页 / JAVA / 用Java打印最大和最小值
用Java打印最大和最小值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用Java打印最大和最小值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2684字,纯文字阅读大概需要4分钟。
内容图文
我刚刚开始在HackerRank上练习以提高我的编码技能.我主要使用Java作为首选语言.我有这个问题,我已经尽我最大的努力给出了解决方案,但并未清除所有测试用例.我已经清除了15个测试用例中的5个,但还有10个要完成.那些在hackerrank上的人可以通过以下链接查看问题:Min-Max Sum
无论如何,我正在简要说明这个问题:
问题陈述
给定五个正整数,找到可以通过对五个整数中的四个精确求和而得出的最小值和最大值.然后将相应的最小值和最大值打印为两个以空格分隔的长整数的一行.
例如,arr = [1,3,5,7,9].我们的最小和为1 3 5 7 = 16,最大为3 5 7 9 = 24.我们将打印16 24
输出格式
打印两个以空格分隔的长整数,分别表示可以通过对五个整数中的四个精确求和而得出的最小值和最大值. (输出可以大于32位整数.)
样本输入1 2 3 4 5
样本输出10 14
说明
我们的初始数字是1、2、3、4和5.我们可以使用五个整数中的四个来计算以下总和:
If we sum everything except 1, our sum is 2+3+4+5=14.
If we sum everything except 2, our sum is 1+3+4+5=13.
If we sum everything except 3, our sum is 1+2+4+5=12.
If we sum everything except 4, our sum is 1+2+3+5=11.
If we sum everything except 5, our sum is 1+2+3+4=10.
我的算法
for(i=0; i<arr.length; i++){
totSum += arr[i];
}
sumOne = totSum - arr[0];
sumTwo = totSum - arr[1];
sumThree = totSum - arr[2];
sumFour = totSum - arr[3];
sumFive = totSum - arr[4];
int[] num = {sumOne, sumTwo, sumThree, sumFour, sumFive};
int temp = 0;
for(i=0;i<num.length;i++){
for(int j=1;j<(num.length-i);j++){
if(num[j-1] > num[j]){
//swap elements
temp = num[j-1];
num[j-1] = num[j];
num[j] = temp;
}
}
}
System.out.print(num[0] + " " + num[4]);
我们也可以通过遍历num数组并找到max和min值来做到这一点.
但是毕竟这样做,我不会清除此模块.
请注意:arr中的元素数固定为5.
我已经知道在10个失败案例中,我知道了一个测试用例,就像这样:
输入(标准输入)
256741038 623958417 467905213 714532089 938071625
预期产量
2063136757 2744467344
解决方法:
您有一个正确的想法(尽管对数组进行排序有点过大,因为您只需要数组的最大值和最小值),但是当您对这些大整数求和时,您将overflow sumtot变量得到一个错误的答案.使用多头应该可以解决以下问题:
long totSum = 0;
for(int i=0; i<arr.length; i++){
totSum += arr[i];
}
long sumOne = totSum - arr[0];
long sumTwo = totSum - arr[1];
long sumThree = totSum - arr[2];
long sumFour = totSum - arr[3];
long sumFive = totSum - arr[4];
long[] num = {sumOne, sumTwo, sumThree, sumFour, sumFive};
long temp = 0;
for(int i=0;i<num.length;i++){
for(int j=1;j<(num.length-i);j++){
if(num[j-1] > num[j]){
//swap elements
temp = num[j-1];
num[j-1] = num[j];
num[j] = temp;
}
}
}
System.out.print(num[0] + " " + num[4]);
请注意,顺便说一句,使用Java 8的流,您可以实现相同的逻辑并保存许多样板代码以及O(nlog(n))排序:
IntSummaryStatistics stats = Arrays.stream(arr).summaryStatistics();
System.out.println
((stats.getSum() - stats.getMax()) + " " + (stats.getSum() - stats.getMin()));
内容总结
以上是互联网集市为您收集整理的用Java打印最大和最小值全部内容,希望文章能够帮你解决用Java打印最大和最小值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。