java 找出数组中两个元素之间的最大差异,以便较小的元素出现在较大的元素之前

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 找出数组中两个元素之间的最大差异,以便较小的元素出现在较大的元素之前相关的知识,希望对你有一定的参考价值。

import java.util.*;
public class MaxDiffElements {
    public class Pair {
        int min;
        int max;
        Pair(int min, int max){
            this.min= min;
            this.max = max;
        }
        
        public String toString() {
            return "[" + min + "," + max + "]";
        }
    }
    public static void main(String args[]) {
        MaxDiffElements maxDiffElements = new MaxDiffElements();
        int[][] input = {
          null,
          {},
          {1},
          {2,7,9,5,1,3,5},
          {3,5,8,4,5,9,10,8,5,3,4},
          {1,2,3,4,5},
          {5,4,3,2,1}
        };
        for(int i=0; i< input.length; i++) {
            System.out.println("Input: " + Arrays.toString(input[i]) + " Result: " + maxDiffElements.find(input[i]));
        }
    }
    
    public Pair find(int[] input) {
        if(input == null || input.length < 2 ) {
            return null;
        }
        int maxSoFar = Integer.MIN_VALUE;
        int diff = Integer.MIN_VALUE;
        for(int i=input.length-1; i >=0; i--) {
            if(input[i] > maxSoFar) {
                maxSoFar = input[i];
            }
            if(maxSoFar - input[i] > diff) {
                diff = maxSoFar - input[i];
            }
        }
        return new Pair(maxSoFar-diff,maxSoFar);
    }
}

以上是关于java 找出数组中两个元素之间的最大差异,以便较小的元素出现在较大的元素之前的主要内容,如果未能解决你的问题,请参考以下文章

使用 SIMD 找出两个元素的最大差异

ArrayIndexOutOfBoundsException,同时找到数组中两个连续元素之间的最大差异

分而治之以找到二维数组中两个有序元素之间的最大差异

找出数组 arr 中重复出现过的元素

java 中如何 找出两个集合中的不重复的元素

用javascript编写(找出两个数组中的差异元素并存入一个新的数组,假设每个数组内部都没有重复元素)。