两个元素之间的最大差,使得较大的元素出现在C中较小的数字之后
给定一个大小为N的整数数组。该数组由随机顺序的整数组成。任务是找到两个元素之间的最大差异,以使较大的元素出现在较小的元素之后。即,Arr[j]-Arr[i]最大,使得j>i。
输入值
Arr[] = { 2,1,3,8,3,19,21}.
输出-两个元素之间的最大差,使得较大的元素出现在较小的数字之后-20
说明-最大差在21和1之间,并且21在数组中的1之后出现。
输入值
Arr[] = {18, 2,8,1,2,3,2,6 }.
输出-两个元素之间的最大差,使得较大的元素出现在较小的数字之后-6
说明-最大差在8和2之间,并且8在数组中的2之后出现。
以下程序中使用的方法如下
声明一个整数数组,其中包含成对的矩形边。(Arr[])
创建一个变量来存储数组的大小。(n)
函数maxArea(intarr[],intn)用于计算矩形的最大面积。它以输入数组及其大小作为参数。
在内部,maxArea()
我们声明了一个数组Dim[2],该数组存储遍历排序后的数组arr[]后发现的最高两个边。
由于arr[]以降序排列,因此最高的4边必须在开头。我们将迭代arr[]以便找到一对边。
首先用0初始化Dim[]。
在while循环内,我们将条件一直持续到j<2,直到找不到dim[0]和dim[1]的值或到达arr[]的末尾。(i<n)。
如果找到一对这样的边(if(arr[i]==arr[i+1])),则将其存储在dim[j]中,并递增j用于下一边。
返回结果为dim[0]和dim[1]的乘积。
注意-sort(arr,n)应该按降序对arr进行排序。
示例
#include <stdio.h> int maxDiff(int arr[], int n){ //到目前为止找到的最大差异 int MD = arr[1] - arr[0]; //到目前为止访问的最小人数 int min = arr[0]; for(int i = 1; i < n; i++){ if (arr[i] - min > MD) MD = arr[i] - min; if (arr[i] < min) min = arr[i]; } return MD; } /* Driver program to test above function */ int main(){ int arr[] = {2,5,7,3,4,12}; int n=6; //函数调用 printf("Maximum difference is : %d ",maxDiff(arr, n)); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
The maximum difference between two elements such that the larger element appears after the smaller number : 10