如何优化这个for循环?

u0sqgete  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(221)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题

class MaximumDiffrence 
{ 

    int maxDiff(int arr[], int arr_size) 
    { 
        int max_diff = arr[1] - arr[0]; 
        int i, j; 
        for (i = 0; i < arr_size; i++) 
        { 
            for (j = i + 1; j < arr_size; j++) 
            { 
                if (arr[j] - arr[i] > max_diff) 
                    max_diff = arr[j] - arr[i]; 
            } 
        } 
        return max_diff; 
    } 

}

为了找到最大的差异,有没有其他方法比使用两个for循环来获得一个非常大的列表?请帮我优化这个。谢谢。

olmpazwi

olmpazwi1#

使用一个for循环,可以找到最高和最低的元素。它们之间的区别是最大的区别。

class MaximumDifference { 

    int maxDiff(int arr[], int arr_size) {
        int lowest = arr[0];
        int highest = arr[0];
        for (int i = 1; i < arr_size; ++i) {
             int value = arr[i];
             if (value < lowest) {
                 lowest = value;
             }
             if (value > highest) {
                 highest = value;
             }
        }
        return highest - lowest;
    } 
}

陷阱:
如果 arr.length 我们是零,或者 arr.length 小于 arr_size ,这将导致错误。我不知道在这种情况下你想要什么回报。
如果最高元素和最低元素之间的差异足够大(例如,如果最高元素 Integer.MAX_VALUE 最低的是负数),这可能会溢出,并返回负数。通过将返回类型更改为 long ,正如斯蒂芬c在评论中所建议的。

相关问题