给定五个正整数,通过对五个整数中的四个整数求和,找到可以计算的最小值和最大值



代码没有通过所有测试,只通过了5个测试。失败的测试用例之一

错误答案

输入(stdin(

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的最大值。U应该将这些值转换为长

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());
}

相关内容

最新更新