java - 在 Java 中查找数组中的最大差异以及元素的位置

标签 java arrays

考虑一个数组 - arr = {2, 3, 10, 6, 4, 8, 1} 我编写了代码来查找 arr[j]arr[i] 之间的最大差异,使得 j > i。在这种情况下。 10 - 2 = 8。

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

我还想获取导致这种差异的实际元素或其位置(在本例中为数字 10 和数字 2),因此我修改了我的代码,如下 -

    int max_diff = arr[1] - arr[0]; 
    int min_element = arr[0]; 
    int max_element = 0; 
    int i; 
    for (i = 1; i < arr_size; i++)  
    { 
        if (arr[i] - min_element > max_diff) {
            max_diff = arr[i] - min_element; 
            max_element = arr[i] // New Addition. This part works
        }
        if (arr[i] < min_element) 
            min_element = arr[i]; 
    } 

我能够找到最大数字(数字 10)的值,但不知道如何找到最小数字(数字 2)。 min_element 变量保存数组中最小数字的值(数字 1),而不是导致差异的最小数字。

救命!

最佳答案

如果我正确理解了这个问题,你想知道 arr[j] 和 arr[i] 的最大差异,其中 arr[j] > arr[i] 我认为问题中应该澄清的是 j > i 这样 1 就不会成为最小元素的选项。问题在于,当代码需要查找最大减法期间使用的最小数组元素时,代码会查找最小数组元素。一个简单的 boolean 值来跟踪最大减法就足够了。

   int max_diff = arr[1] - arr[0]; 
    int min_element = arr[0]; 
    int max_element = 0; 
    int i; 

    boolean newSubtractor = false;

    for (i = 1; i < arr_size; i++)  
    { 

        newSubtractor = false;

        if (arr[i] - min_element > max_diff) {
            max_diff = arr[i] - min_element; 
            max_element = arr[i] // New Addition. This part works
            newSubtractor = true;
        }
        if (arr[i] < min_element && newSubtractor) 
            min_element = arr[i]; 
    } 

关于java - 在 Java 中查找数组中的最大差异以及元素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57212570/

相关文章:

java - Android Studio写文件时渲染问题

java - 带有注释参数的私有(private)方法的 Android java.lang.VerifyError

c++ - 混淆 C++ prime 加上动态数组的例子

对多维数组中的列进行分组和求和的 C 函数

Java Swing 未正确显示

java - java.awt.color.RED 是对象还是属性?

java - 如何从ajax表单中的HttpServletResponse获取数据

php - 对 bool 数组执行按位运算

Java 从包含空格的字节数组创建字符串

c - 将可变长度字符串数组读取为整数