arrays - 查找数组元素中的最大差异

标签 arrays algorithm function max min

示例案例: a[]={1,4,2,5,10,5,4};//输出== 9
在这里我们不能改变元素的顺序 smaller 总是出现在 bigger 元素之前 约束是:

1<=n<=10^4
10^-6<=a[i]<=10^-6

这是我的代码,但它在某些测试用例上会失败,有人能找到这段代码中的错误吗? 谢谢。

int maxDiff(int *a,int n)
{
   int MIN_value=INT_MAX;
   int MAX_vale=INT_MIN;
       for(int i=0;i<n;i++) {
        MIN_value=min(MIN_value,a[i]);
        MAX_value=max(a[i]-MIN_value,MAX_value);
    }
 return MAX_value;

}

最佳答案

你的函数是错误的,因为如果它在数组的末尾找到最小值,你之前所有的差异计算都将无效。因此,您的错误在行中:

MAX_value=max(a[i]-MIN_value,MAX_value);

解决此问题的更好方法是:

int maxDiff(int *a,int n)
{
   if (n == 0 || n == 1)    //If list is empty or has 1 element, return 0
       return 0;
   int MIN_value=INT_MAX;
   int MAX_vale=INT_MIN;
       for(int i=0;i<n;i++) {
        MIN_value=min(MIN_value,a[i]);
        MAX_value=max(a[i],MAX_value);
    }
 return MAX_value - MIN_VALUE;

}

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

相关文章:

javascript - 如何通过引用将属性传递给 javascript 函数?

arrays - Hive:使用 csv 文件中的结构数组创建表,其中所有内容均以逗号分隔

javascript - 无法推送到 Knockout 可观察数组

对如何 hell 般地打印数组感到困惑

python - 如何在 Python 中就地对整数数组进行排序?

c - 求素数的位置

c++ - 在排序和旋转的数组中搜索

java - 作业 - Java - 在我创建的双链表上进行选择排序

C 回调函数可以同时运行吗?

function - 在函数中使用 EXECUTE 时出现 PostgreSQL 语法错误