我还在学习如何使用java,我想知道当用户输入4个数字时是否有办法添加3个最高数字?
对于Ex。用户输入5 6 7 6,他们将添加6 7 6,这将是19。
我得到的唯一想法是使用if else语句?但我觉得这在我的代码中效率不高。
先谢谢
答案 0 :(得分:2)
假设一个int数组并且只输入4个数字,那么实际上可以将问题重新描述为获取除去数组中最小元素的总和。并不是说这个大小很重要,排序会产生O(nlogn)成本。相反,只需在一个循环中通过找到min并在最后删除它来线性地进行。
int[] nums = { 5, 6, 7, 6 };
int min = Integer.MAX_VALUE;
int sum = 0;
for (int num : nums) {
if (num < min) {
min = num;
}
sum += num;
}
sum -= min;
System.out.println(sum);
答案 1 :(得分:0)
使用Array.sort
int arr[] = {5,6,7,6};
Arrays.sort(arr);
int total = 0;
for (int i = 3; i > 0; i--) // what a fool, it was the wrong way around
total += arr[i];
System.out.println(total);
或者你可以使用
Integer arr[] = {5,10, 10, 10};
Arrays.sort(arr, Collections.reverseOrder());
并且通常从0到3循环
答案 2 :(得分:0)
我建议您首先创建一个集合然后排序。 如果你排序和求和,测试用例如
9,5,9,7,6,2将失败,因为数组中的最大数字是9,5,7,并且在排序之后,前三个指数只会得到9,9,9
创建一个集合(不重复)
阵列将是9,5,7,6,2 然后你可以对它进行排序并总结前三个。
答案 3 :(得分:0)
将它们存储在数组中。 对数组进行排序。 总结最后3个元素i,e
int[] arr={7,8,5,2,1,4,5};
Arrays.sort(arr);
int sum = 0;
for(int i=arr.length-1;i>=arr.length-3;i--) {
sum += arr[i];
}
System.out.println(sum);
答案 4 :(得分:-1)
搜索排序算法,然后对数字进行排序并添加前3个数字