给定五个正整数,找到可以通过将五个整数中的四个恰好相加来计算的最小值和最大值

问题描述 投票:0回答:4

代码并未通过所有测试,仅通过了 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);
    }
}
java
4个回答
1
投票

使用

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

0
投票

U 达到 int 的最大值。你应该将这些值转换为 long

long sum=0;
long minSum = sum-min;
long maxSum = sum-max;

转换这些值后,我的输出是

2572095760 2999145560

0
投票

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

0
投票
     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);

}
© www.soinside.com 2019 - 2024. All rights reserved.