代码并未通过所有测试,仅通过了 5 个测试。 失败的测试用例之一
错误答案
输入(标准输入)
793810624 895642170 685903712 623789054 468592370
预期输出
2572095760 2999145560
public class Solution {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
//initialize array
int arr[]=new int[5];
int sum=0;
//array elements
for(int i=0;i<5;i++)
{
arr[i] = sc.nextInt();
sum+=arr[i];
}
//Sorting the array and storing the minimum and maximum values
Arrays.sort(arr);
int min=arr[4];
int max=arr[0];
int minSum = sum-min;
int maxSum = sum-max;
System.out.println(minSum+" "+maxSum);
}
}
使用
long
代替 int
。
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
import java.util.Arrays;
public class Solution {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
// initialize array
long arr[] = new long[5];
long sum = 0;
// array elements
for (int i = 0; i < 5; i++) {
arr[i] = sc.nextLong();
sum += arr[i];
}
// Sorting the array and storing the minimum and maximum values
Arrays.sort(arr);
long min = arr[4];
long max = arr[0];
long minSum = sum - min;
long maxSum = sum - max;
System.out.println(minSum + " " + maxSum);
}
}
U 达到 int 的最大值。你应该将这些值转换为 long
long sum=0;
long minSum = sum-min;
long maxSum = sum-max;
转换这些值后,我的输出是
2572095760 2999145560
C# 中的另一种解决方案
public static void miniMaxSum(List<int> arr)
{
long[] newArr = new long[arr.Count];
for (int i = 0; i < arr.Count; i++)
{
long aux = 0;
for (int j = 0; j < arr.Count; j++)
{
aux = (i != j) ? aux += arr[j] : aux;
}
newArr[i] = aux;
}
Console.WriteLine(newArr.Min() + " " + newArr.Max());
}
public static void miniMaxSum(List<Integer> arr) {
arr.sort(Comparator.naturalOrder());//Sort in case if the input not sorted.
long minSum=0, maxSum=0;
List<Integer> minList=arr.subList(0,arr.size()-1);
minSum=minList.stream().mapToLong(i -> i).sum();
List<Integer> maxList=arr.subList(1,arr.size());
maxSum=maxList.stream().mapToLong(i -> i).sum();
System.out.println(minSum +" "+ maxSum);
}