C中数组中相同元素的两次出现之间的最大距离
给我们一个整数数组。数组具有多次出现的相同元素。此处的任务是找到数组中任何两个相同元素之间的最大距离。我们将从左边开始从数组中选择每个元素。然后,我们将找到相同编号的最后一次出现并存储索引之间的差异。现在,如果此差异最大,则将其返回。
输入项
Arr[] = { 1,2,4,1,3,4,2,5,6,5 }
输出-数组− 4中两次出现相同元素之间的最大距离
说明-具有索引的重复数字-
1. 1, first index 0, last index 3 distance=3-0-1=22. 2, first index 1, last index 6 distance=6-1-1=4
3. 5, first index 7, last index 9 distance=9-7-1=1
Maximum distance between two occurrences of same element : 4
输入项
Arr[] = { 10,20,1,10,10,21,12,0 }
输出-数组− 3中两次出现相同元素之间的最大距离
说明-具有索引的重复数字-
1. 10 first index 0, last index 4 distance=4-0-1=3Maximum distance between two occurrences of same element : 3
注意-如果输入数组没有重复数字,则返回-1
以下程序中使用的方法如下
我们将一个具有重复数字的整数数组作为Arr []
函数maxDistance(int arr [],int n)用于计算两次出现相同元素之间的最大距离。
我们将变量maxD初始化为-1。
在for循环内,从头开始遍历整数数组。
在嵌套的for循环中,遍历其余元素并搜索重复(如果有)。(if(arr [i] == arr [j])。
如果为true,则通过减去索引来计算数字之间的差。(temp = ji-1)
如果此值是目前为止找到的最大值,则将其存储在maxD中
遍历整个数组后返回maxD。
示例
#include <stdio.h>#include <math.h>
int maxDistance(int arr[],int n){
int size = n;
int maxD = -1;
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (arr[i] == arr[j]){
int temp=abs(j-i-1);
maxD = maxD>temp?maxD:temp;
}
return maxD;
}
// Driver code
int main(){
int Arr[] = {1,2,4,1,3,4,2,5,6,5};
printf("Maximum distance between two occurrences of same element in array:%d", maxDistance(Arr,10) );
return 0;
}
输出结果
如果我们运行上面的代码,它将生成以下输出-
Maximum distance between two occurrences of same element in array − 4
以上是 C中数组中相同元素的两次出现之间的最大距离 的全部内容, 来源链接: utcz.com/z/345617.html