Java 如何求解数组中的最大值和最小值? static int maxDifference(int[]a){ int最小值,差值=-1; 如果(a.length==0){ 返回-1; } 最小值=a[0]; for(int i=1;i

Java 如何求解数组中的最大值和最小值? static int maxDifference(int[]a){ int最小值,差值=-1; 如果(a.length==0){ 返回-1; } 最小值=a[0]; for(int i=1;i,java,arrays,Java,Arrays,当我搜索max Firstmin的代码时,我发现了这段代码。请解释这段代码是如何用于输入的int[a]={20,10,65,95110200,60700,5}它返回的是700-10而不是700-5。如何使用下面的代码,这将给你预期的答案 static int maxDifference(int[] a) { int minimum, diff = -1; if(a.length == 0) { return -1; } minimum = a[0]

当我搜索max Firstmin的代码时,我发现了这段代码。请解释这段代码是如何用于输入的
int[a]={20,10,65,95110200,60700,5}
它返回的是700-10而不是700-5。如何使用下面的代码,这将给你预期的答案

static int maxDifference(int[] a) {
    int minimum, diff = -1;
    if(a.length == 0) {
        return -1;
    }
    minimum = a[0];
    for (int i = 1; i < a.length; i++) {
        diff = Math.max(diff, a[i] - minimum);
        minimum = Math.min(minimum, a[i]);
    }
    return diff;
static int maxDifference(int[]a)
{
int最小值、差值、最大值=-1;
如果(a.length==0){
返回-1;
}
最小值=a[0];
最大值=a[0];
for(int i=1;i
使用下面的代码,它将给出您期望的答案

static int maxDifference(int[] a) {
    int minimum, diff = -1;
    if(a.length == 0) {
        return -1;
    }
    minimum = a[0];
    for (int i = 1; i < a.length; i++) {
        diff = Math.max(diff, a[i] - minimum);
        minimum = Math.min(minimum, a[i]);
    }
    return diff;
static int maxDifference(int[]a)
{
int最小值、差值、最大值=-1;
如果(a.length==0){
返回-1;
}
最小值=a[0];
最大值=a[0];
for(int i=1;i
此算法(如@Pavneet所述)根据所有之前的值(而不是所有值)的值与最小值之间的差值计算最大值。因此,在您的示例中:

static int maxDifference(int[] a)
{
   int minimum, diff , maximum = -1;
   if(a.length == 0) {
   return -1;
   }
   minimum = a[0];
   maximum = a[0];
   for (int i = 1; i < a.length; i++) 
   {
      minimum = Math.min(minimum, a[i]);
      maximum = Math.max(maximum , a[i]);
   }
   diff = maximum - minimum;
   return diff;
} 
此算法(如@Pavneet所述)根据所有以前的值(而不是所有值)的值与最小值之间的差异计算最大值。因此,在您的示例中:

static int maxDifference(int[] a)
{
   int minimum, diff , maximum = -1;
   if(a.length == 0) {
   return -1;
   }
   minimum = a[0];
   maximum = a[0];
   for (int i = 1; i < a.length; i++) 
   {
      minimum = Math.min(minimum, a[i]);
      maximum = Math.max(maximum , a[i]);
   }
   diff = maximum - minimum;
   return diff;
} 

下面的代码将起作用

 int[a]={20,10,65,95,110,200,60,700,5}
 i=0, result = 0 (minimum from all previous values = 20 and value = 20) 
 i=1 result = 0 (minimum = 20, value = 10)
 ...
 i=7, result = 700 -10 (minium = 10, value = 700)
 i=8, result = -5 (miniumum= 10, value = 5)

 max(0,0..,700-10,-5) = 700-10
static int maxDifference(int[]a){
int min=a[0];
int max=a[0];
for(int i=1;ia[i])
min=a[i];
如果(最大值
以下代码将起作用

 int[a]={20,10,65,95,110,200,60,700,5}
 i=0, result = 0 (minimum from all previous values = 20 and value = 20) 
 i=1 result = 0 (minimum = 20, value = 10)
 ...
 i=7, result = 700 -10 (minium = 10, value = 700)
 i=8, result = -5 (miniumum= 10, value = 5)

 max(0,0..,700-10,-5) = 700-10
static int maxDifference(int[]a){
int min=a[0];
int max=a[0];
for(int i=1;ia[i])
min=a[i];
如果(最大值< java >还是C++?你在Max min中理解了这个问题,但是它是最大值FixStIt最小值,读到问题陈述,仔细地改变你两个状态的顺序:这个java还是C++?你在max min中理解这个问题,但是它是最大值,最小值,读问题陈述CAREF。彻底地