我刚刚开始在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
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
for(int j=1;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