เราได้รับอาร์เรย์ของจำนวนเต็ม อาร์เรย์มีองค์ประกอบเดียวกันหลายครั้ง งานนี้คือการหาระยะห่างสูงสุดระหว่างสององค์ประกอบที่เหมือนกันของอาร์เรย์ เราจะเลือกแต่ละองค์ประกอบจากอาร์เรย์โดยเริ่มจากด้านซ้าย จากนั้นเราจะพบการเกิดขึ้นครั้งสุดท้ายของหมายเลขเดียวกันนั้นและเก็บความแตกต่างระหว่างดัชนีต่างๆ ตอนนี้หากส่วนต่างนี้สูงสุดแล้วส่งคืน
ป้อนข้อมูล
Arr[] ={ 1,2,4,1,3,4,2,5,6,5 }
ผลผลิต −ระยะห่างสูงสุดระหว่างองค์ประกอบเดียวกันสองครั้งในอาร์เรย์ − 4
คำอธิบาย − ตัวเลขซ้ำกับดัชนี −
<ก่อน>1. 1 ดัชนีแรก 0, ดัชนีสุดท้าย 3 ระยะทาง=3-0-1=22 2 ดัชนีแรก 1 ดัชนีสุดท้าย 6 ระยะทาง=6-1-1=43 5, ดัชนีแรก 7, ดัชนีสุดท้าย 9 Distance=9-7-1=1ระยะห่างสูงสุดระหว่างองค์ประกอบเดียวกันสองครั้งที่เกิดขึ้น:4ป้อนข้อมูล
Arr[] ={ 10,20,1,10,10,21,12,0 }
ผลผลิต −ระยะห่างสูงสุดระหว่างองค์ประกอบเดียวกันสองครั้งในอาร์เรย์ − 3
คำอธิบาย − ตัวเลขซ้ำกับดัชนี −
<ก่อน>1. 10 ดัชนีแรก 0, ดัชนีสุดท้าย 4 ระยะทาง=4-0-1=3ระยะห่างสูงสุดระหว่างสองรายการที่เกิดขึ้นขององค์ประกอบเดียวกัน :3หมายเหตุ − หากอาร์เรย์อินพุตไม่มีตัวเลขซ้ำ ให้คืนค่า -1
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้อาร์เรย์จำนวนเต็มที่มีตัวเลขซ้ำเป็น Arr[]
-
ฟังก์ชัน maxDistance( int arr[],int n) ใช้เพื่อคำนวณระยะทางสูงสุดระหว่างสองรายการที่เกิดขึ้นขององค์ประกอบเดียวกัน
-
เราเริ่มต้นตัวแปร maxD ด้วย -1
-
ภายใน for วนรอบอาร์เรย์ของจำนวนเต็มตั้งแต่ต้น
-
ในการซ้อนสำหรับวนรอบองค์ประกอบที่เหลือและค้นหาการทำซ้ำถ้ามี ( ถ้า ( arr[i] ==arr[j] )
-
หากเป็นจริงให้คำนวณความแตกต่างระหว่างตัวเลขโดยลบดัชนี ( temp=j-i-1)
-
หากพบค่านี้เป็นค่าสูงสุดแล้ว ให้เก็บไว้ใน maxD
-
คืนค่า maxD หลังจากผ่านทั้งอาร์เรย์
ตัวอย่าง
#include#include int maxDistance(int arr[],int n){ ขนาด int =n; int maxD =-1; สำหรับ (int i =0; i อุณหภูมิ? maxD:ชั่วคราว; } return maxD;}// รหัสไดรเวอร์ main(){ int Arr[] ={1,2,4,1,3,4,2,5,6,5}; printf("ระยะห่างสูงสุดระหว่างองค์ประกอบเดียวกันสองครั้งในอาร์เรย์:%d", maxDistance(Arr,10) ); คืนค่า 0;}
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
ระยะห่างสูงสุดระหว่างองค์ประกอบเดียวกันสองครั้งในอาร์เรย์ − 4