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(intArr[],intn)用于计算数组中元素的第一个索引与最后一个索引之间的最大差(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