首页 > 解决方案 > 使用 Java 的 HackerRank 中的 Min-Max Sum 问题(错误)

问题描述

给定五个正整数,找出可以通过将五个整数中的四个恰好相加来计算的最小值和最大值。然后将各自的最小值和最大值打印为单行的两个空格分隔的长整数。

static void miniMaxSum(int[] arr) {
    int summin=0;
    int summax=0;
    for (int i=0; i< 5; i++) {
        for (int j=4; j>i; j--) {
            if(arr[i]>arr[j]){
                int c=arr[i];
                arr[i]=arr[j];
                arr[j]=c;
            }
        }
    }
    for (int i=0; i<4; i++) {
        summin=summin+arr[i];
    }
    for (int i=1; i<5; i++) {
        summax=summax+arr[i];
    }
    System.out.print(summin+" "+summax);
}

我的代码只能在此处使用 5/15 个测试用例正确输入图像描述。我想对数组进行排序,然后计算结果。“min”结果是正确的,但“max”结果是负整数,所以它是错误的。我发现问题是由排序后的最后一个元素引起的。使用 Netbeans,我计算了数组中所有元素的总和。在 4 个第一个元素之后,总和仍然是正整数,但是当添加第 5 个元素时,总和变为负整数。我不知道为什么,有人可以帮我吗?

标签: java

解决方案


我猜你应该使用 long as summin 和 summax,这样可以解决你的问题(你有负值,因为你的 sum max 大于 max integer value)


推荐阅读