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