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=2 2. 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=3 Maximum distance between two occurrences of same element : 3
注意 - 如果輸入陣列沒有重複數字,則返回 -1
下面程式中使用的方案如下
我們取一個包含重複數字的整數陣列 Arr[]
函式 maxDistance( int arr[],int n) 用於計算相同元素之間最大距離。
我們將變數 maxD 初始化為 -1。
在 for 迴圈內部從開頭遍歷整數陣列。
在巢狀 for 迴圈中遍歷其餘元素並搜尋是否存在重複項。(if ( arr[i] == arr[j] )。
如果為真,則透過減去索引來計算數字之間的差值。(temp=j-i-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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP