这是针对" Mini Max Sum"关于HackerRank的问题,我不明白为什么它在所有测试用例上都没有复选标记。有人能告诉我我的问题在哪里。问题是:
打印两个以空格分隔的长整数,表示可以通过对五个整数中的四个进行求和来计算的相应最小值和最大值。 (输出可以大于32位整数。)
ArrayList<Integer> array = new ArrayList(10);
for(int i = 0; i < 10; ++i){
array.add(i, i);
}
Collections.shuffle(array, new Random(10));
for(int i = 0; i < 10; ++i){
System.out.print(array.get(i));
}
答案 0 :(得分:1)
这也起作用。谢谢!
static void miniMaxSum(int[] arr) {
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
Collections.sort(list);
long x=0, y=0;
for(int j=0;j<(list.size()-1);j++){
x = x + list.get(j);
y = y + list.get(j+1);
}
System.out.println(x +" "+y);
}
答案 1 :(得分:1)
Unable to parse binding {args: {contents: h2}, command: insert_snippet, key: [option+f1]}
答案 2 :(得分:0)
问题是min
和max
的初始值。
min
正在被重置为循环内的第一个值,因此它可能仅在第一个或最后一个值是最小值时才起作用;
max
从零开始,因此如果所有值都为负数,max
将保持为零(而不是其中一个输入值)。
提示:在第一次迭代(min
)上设置max
和i == 0
,或者按照建议,分别使用Integer.MAX_VALUE和Integer.MIN_VALUE作为初始值(实际{{1} long
和min
不需要},也不需要数组)
答案 3 :(得分:0)
这对我有用。
{{1}}
答案 4 :(得分:0)
以下是该问题的提示:可以由summing exactly four of the five integers
计算的最小值和最大值。
只要不对数组进行排序,请先对数组进行排序。取两个for loop
,因为我们要使复杂度保持为O(n),即线性。
1st
索引到n - 1
。假设索引从0
开始。这将为您提供所有元素的总和,但最小的元素将是最大的总和。0th
索引到n - 2
。假设索引从0
开始。这将为您提供除最大元素(最小元素)之外的所有元素的和。比方说,我们的初始数字是1、2、3、4和5。 我们可以使用五个整数中的四个来计算以下总和:
答案 5 :(得分:0)
public static void minmaxsum(int[] ar1) {
long a, b, c, d, e;
a = (long) ar1[1] + (long) ar1[2] + (long) ar1[3] + (long) ar1[4];
System.out.println(a);
b = (long) ar1[0] + (long) ar1[2] + (long) ar1[3] + (long) ar1[4];
System.out.println(b);
c = (long) ar1[0] + (long) ar1[1] + (long) ar1[3] + (long) ar1[4];
System.out.println(c);
d = (long) ar1[0] + (long) ar1[1] + (long) ar1[2] + (long) ar1[4];
System.out.println(d);
e = (long) ar1[0] + (long) ar1[1] + (long) ar1[2] + (long) ar1[3];
System.out.println(e);
long[] df = new long[] { a, b, c, d, e };
long max = df[0];
for (int i = 0; i < df.length; i++) {
if (df[i] > max) {
max = df[i];
}
}
long min = df[0];
for (int i = 0; i < df.length; i++) {
if (df[i] < min) {
min = df[i];
}
}
System.out.println(min + " " + max);
}
答案 6 :(得分:0)
import math
import os
import random
import re
import sys
def miniMaxSum(arr):
arr.sort()
m = sum(arr)
max_num = m - arr[-1]
min_num = m - arr[0]
print(max_num, min_num)
if __name__ == '__main__':
arr = list(map(int, input().rstrip().split()))
miniMaxSum(arr)
答案 7 :(得分:-1)
static void miniMaxSum(int[] arr) {
long[] longs = Arrays.stream(arr).asLongStream().toArray();
Arrays.sort(longs);
long sum = LongStream.of(longs).sum();
long min = sum - longs[4];
long max = sum - longs[0];
System.out.println(min + " " + max);
}
答案 8 :(得分:-1)
此答案为PYTHON语言。我是初学者,欢迎任何改进
n = input().split(" ")
n=list(n)
n1 = list(map(int,n))
n2 = list(map(int,n))
n1.sort()
n1.pop()
min =0
max=0
for i in n1:
min+=i
n2.sort()
n2.reverse()
n2.pop()
for j in n2:
max+=j
print(min, max)
答案 9 :(得分:-1)
这是在JavaScript中对我有用的东西:
var sum = 0;
var arry = [];
function miniMaxSum(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length; j++) {
if (arr[j] !== arr[i]) {
sum += arr[j];
}
}
arry.push(sum);
sum = 0;
}
var min = Math.min(...arry);
var max = Math.max(...arry);
console.log(min, max);
}
答案 10 :(得分:-1)
在Python3上为我工作!
def miniMaxSum(arr):
total = sum(arr)
low = total - min(arr)
high = total - max(arr)
print(high, low)
return