【发布时间】:2020-12-18 16:08:23
【问题描述】:
问题来自:https://www.hackerrank.com/challenges/mini-max-sum/problem
问题描述:给定五个正整数,找出可以通过将五个整数中的四个恰好相加来计算的最小值和最大值。然后将各自的最小值和最大值打印为一行,由两个空格分隔的长整数组成。
问题:对于某些测试用例,我得到了输出 -ve,我理解这是因为“int”大小的存储是有限的,这就是我得到 -ve 值的原因。 我不明白我在哪里犯了错误。
我的解决方案:
static void miniMaxSum(int[] arr) {
int n = arr.length;
long[] ar = new long[n];
ar[0] = arr[1] + arr[2] + arr[3] + arr[4];
ar[1] = arr[0] + arr[2] + arr[3] + arr[4];
ar[2] = arr[0] + arr[1] + arr[3] + arr[4];
ar[3] = arr[0] + arr[1] + arr[2] + arr[4];
ar[4] = arr[0] + arr[1] + arr[2] + arr[3];
long[] a = new long[n];
for(int i=0; i<n; i++){
a[i]=ar[i];
}
Arrays.sort(a);
long max =a[4];
long min =a[0];
System.out.print(min+" "+max);
}
HackerRank 提供的预先编写的代码:
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
// Complete the miniMaxSum function below.
static void miniMaxSum(int[] arr) {
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int[] arr = new int[5];
String[] arrItems = scanner.nextLine().split(" ");
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
for (int i = 0; i < 5; i++) {
int arrItem = Integer.parseInt(arrItems[i]);
arr[i] = arrItem;
}
miniMaxSum(arr);
scanner.close();
}
}
【问题讨论】:
标签: java integer long-integer