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(int arr[],int n)函数用于计算矩形的最大面积。它以输入数组及其大小作为参数。
在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){
// Maximum difference found so far
int MD = arr[1] - arr[0];
// Minimum number visited so far
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;
// Function calling
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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP