C語言中陣列元素首尾索引的最大差值
給定一個大小為 N 的整數陣列。陣列包含隨機順序的整數。任務是找到陣列中元素的首尾索引之間的最大差值。我們必須找到一個在陣列中出現兩次的數字,並且其索引之間的差值最大。如果有多個這樣的對,我們將儲存索引之間最大的差值。
輸入
Arr[] = { 2,1,3,1,3,2,5,5 }.輸出 −陣列中元素首尾索引的最大差值 − 5
說明 − 元素及其索引之間的差值對如下所示 −
(2,2) Arr[0] and Arr[5] 5-0=5 max difference till now is 5 (1,1) Arr[1] and Arr[3] 3-1=2 max difference till now is 5 (3,3) Arr[2] and Arr[4] 4-2=2 max difference till now is 5 (5,5) Arr[6] and Arr[7] 7-6=1 max difference till now is 5
輸入
Arr[] = { 2,2,3,4,8,3,4,4,8,7 }.輸出 −陣列中元素首尾索引的最大差值 − 4
說明 − 元素及其索引之間的差值對如下所示 −
(2,2) Arr[0] and Arr[1] ; 1-0=1; max difference till now is 1 (3,3) Arr[2] and Arr[5] ; 5-2=3; max difference till now is 3 (4,4,4) Arr[3],Arr[6],Arr[7] ; 7-6=1,6-3=3,7-3=4; max difference till now is 4 (8,8) Arr[4] and Arr[8] ; 8-4=4 ; max difference till now is 4
下面程式中使用的解決方法如下
宣告一個包含隨機順序的重複數字的整數陣列。(Arr[])
建立一個變數來儲存陣列的大小。(N)
函式 maxDifference(int Arr[],int n) 用於計算陣列中元素首尾索引之間的最大差值 (maxD)。
在 maxDifference() 中,我們宣告 maxD 用於儲存迄今為止找到的最大索引差值。
從第一個元素(索引 i=0)開始,使用 for 迴圈遍歷陣列。
在巢狀的 for 迴圈中,遍歷剩餘的陣列 (j=i+1),直到到達最後一個索引。
如果我們找到與 Arr[i] 相同的元素,我們計算其索引 i、j 之間的差值,如果它大於 maxD 的先前值,我們更新 maxD。
繼續執行此操作,直到兩個 for 迴圈結束。
返回儲存在 maxD 中的結果。
示例
#include <stdio.h>
int maxDifference(int arr[],int n){
int maxD=0;
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(arr[i]==arr[j] && (j-i)>maxD)
maxD=j-i;
}
}
return maxD;
}
int main(){
int Arr[] = {1, 4, 1, 3, 3, 5, 4, 5, 2};
int N = sizeof(Arr) / sizeof(Arr[0]);
printf("Maximum difference between first and last indexes of an element in array : %d" ,maxDifference(Arr, N);
return 0;
}輸出
如果我們執行以上程式碼,它將生成以下輸出:
Maximum difference between first and last indexes of an element in array : 5
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP