Heim >Backend-Entwicklung >C++ >Finden Sie den Start- und Endindex von Elementen in einem unsortierten Array in C++
In diesem Problem erhalten wir ein Array aar[], das n unsortierte Ganzzahlwerte und einen Ganzzahlwert enthält. Unsere Aufgabe besteht darin, den Start- und Endindex eines Elements in einem unsortierten Array zu finden.
Bei Vorkommen eines Elements im Array geben wir
„Startindex und Endindex“ zurück (wenn es zweimal oder öfter im Array gefunden wird).
„einzelner Index“ wenn gefunden
„Element nicht vorhanden“ wenn nicht im Array vorhanden.
Nehmen wir ein Beispiel, um das Problem zu verstehen:
Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2 Output : starting index = 0, ending index = 5
Erklärung
Element 2 erscheint zweimal,
zum ersten Mal bei Index = 0,
zum zweiten Mal bei Index = 5
Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5 Output : Present only once at index 2
Erklärung
Element 5 erscheint nur einmal bei Index = 2,
Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7 Output : Not present in the array!
Eine einfache Möglichkeit, dieses Problem zu lösen, besteht darin, über das Array zu iterieren.
Wir durchlaufen das Array und behalten zwei Indexwerte bei: den ersten und den letzten. Der erste Index durchläuft das Array vom Anfang und der letzte Index durchläuft das Array vom Ende. Die Schleife endet, wenn die Elemente am ersten und letzten Index den gleichen Wert haben.
Schritt 1 – Schleife durch das Array
Schritt 1.1 – Verwenden Sie den ersten Index zum Durchlaufen vom Anfang und den letzten Index zum Durchlaufen vom Ende.
Schritt 1.2 – Wenn der Wert an einem Index gleich val ist. Erhöhen Sie den Indexwert nicht.
Schritt 1.3 – Rückkehr, wenn beide Indizes den gleichen Wert haben.
Programm, das veranschaulicht, wie unsere Lösung funktioniert
#include <iostream> using namespace std; void findStartAndEndIndex(int arr[], int n, int val) { int start = 0; int end = n -1 ; while(1){ if(arr[start] != val) start++; if(arr[end] != val) end--; if(arr[start] == arr[end] && arr[start] == val) break; if(start == end) break; } if (start == end ){ if(arr[start] == val) cout<<"Element is present only once at index : "<<start; else cout<<"Element Not Present in the array"; } else { cout<<"Element present twice at \n"; cout<<"Start index: "<<start<<endl; cout<<"Last index: "<<end; } } int main() { int arr[] = { 2, 1, 5, 4, 6, 2, 9, 0, 2, 3, 5 }; int n = sizeof(arr) / sizeof(arr[0]); int val = 2; findStartAndEndIndex(arr, n, val); return 0; }
Element present twice at Start index: 0 Last index: 8
Das obige ist der detaillierte Inhalt vonFinden Sie den Start- und Endindex von Elementen in einem unsortierten Array in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!